Skip to content

Commit 9adde13

Browse files
mariuspruvotclaude
andauthored
chore: prune dead frontend components and stale doc refs (#51)
* chore: prune dead frontend components and stale doc refs - delete unused components: StatusBadge, ThinkingBlock, ToolUseBlock (knip-confirmed, not imported anywhere outside themselves) - remove unused Topbar re-export from shared/components barrel (Topbar is still imported directly by AppShell — component kept) - drop unused @testing-library/jest-dom devDep (no imports anywhere) - declare @shikijs/langs + @shikijs/themes as explicit dependencies (used directly by shiki.ts via deep imports — were only transitive) - CLAUDE.md: drop ToolUseBlock/ThinkingBlock from the Conversation UI component chain now that the files are gone make lint ✓, web tests 65/65 ✓, tsc clean. API-side tests need Postgres up (unchanged, not touched by this cleanup). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: refresh skills tables and drop stale "Optional Files" section Audit revealed three stale sections — only the obvious ones, not cosmetic drift: - CLAUDE.md + README.md: skills tables listed only `challenge-me` but skills/ now contains 5 skills (challenge-me, eli5, hot-seat, pair-debug, test-me). Expanded both tables. - docs/creating-skills.md: "Optional Files" section documented examples/, scoring.md, context.md conventions that no skill actually uses (grep/find: zero hits). Removed the section — can re-add when a skill actually needs the convention. All file paths, symbol refs, env vars, make targets, and module claims in the other docs verified clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(ci): regenerate package-lock so npm ci has all platform deps My local npm install on macOS dropped the Linux-only @emnapi/* optional dependencies from the lock file, making `npm ci` fail on CI's Ubuntu runner with "Missing: @emnapi/core from lock file". Regenerated the lock from scratch (rm -rf node_modules package-lock.json && npm install) so entries for every platform are recorded. Same dependency graph, just a complete lock. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent a6b6dab commit 9adde13

9 files changed

Lines changed: 445 additions & 676 deletions

File tree

CLAUDE.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ infra/
4949
- **Container orchestration**: `container` module manages ephemeral Docker lifecycle, credential injection, result relay
5050
- **Skills as agents**: each skill is a self-contained folder with workflow definitions, mounted into containers
5151
- **SSE passthrough**: backend relays container output to frontend (no AI response generation in backend)
52-
- **Conversation UI**: frontend renders session output as a structured conversation with markdown (react-markdown + remark-gfm), syntax highlighting (shiki with JS regex engine), diff coloring, and collapsible tool_use/thinking blocks. Components: `ConversationOutput` (scroll container) -> `MessageBlock` (role dispatch) -> `MarkdownContent` / `CodeBlock` / `ToolUseBlock` / `ThinkingBlock`. Data flows as `StreamMessage[]` (structured content blocks) instead of flat text lines.
52+
- **Conversation UI**: frontend renders session output as a structured conversation with markdown (react-markdown + remark-gfm), syntax highlighting (shiki with JS regex engine), and diff coloring. Components: `ConversationOutput` (scroll container) -> `MessageBlock` (role dispatch) -> `MarkdownContent` / `CodeBlock`. Data flows as `StreamMessage[]` (structured content blocks) instead of flat text lines.
5353
- **Session persistence**: stream-json events are batch-persisted to `session_events` table (JSONB) during SSE streaming via `stream_and_persist()`. Completed sessions can be replayed from `GET /sessions/{id}/events`. The streaming pipeline is layered: `stream_events()` (raw tuples) -> `stream_and_persist()` (SSE + DB writes) or `stream_output()` (SSE only, for tests).
5454
- **Multi-turn via per-turn invocations**: `--input-format stream-json` exits after each turn (by design). The entrypoint runs `claude -p` for the first turn, then loops reading user messages from a FIFO and calling `claude -c -p` (--continue) for each subsequent turn. Each invocation emits its own `system` init + `result` events — frontend should expect multiple `system`/`result` events per session.
5555
- **Stream-json protocol**: containers emit NDJSON with 5 event types: `system` (init/retry), `assistant` (one event per content block — thinking/text/tool_use), `user` (tool_result), `result` (turn end + metadata), `rate_limit_event`. The `result.result` field duplicates the last assistant text — only display assistant events, use result for status only. No `--include-partial-messages` flag, so no `stream_event` deltas. A 6th type `error` (`{"type":"error","error":{"message":"..."}}`) is emitted by the entrypoint when setup fails (clone/checkout errors). The SSE `done` event includes both `message` and `status` fields — frontend uses `status` to distinguish `completed` vs `failed`.
@@ -68,7 +68,11 @@ Skills are pluggable Claude Code agent definitions in `skills/`. See `skills/SKI
6868

6969
| Skill | Purpose | PR fetch strategy |
7070
|-------|---------|-------------------|
71-
| `challenge-me` | Socratic quiz on PR changes | Shallow clone |
71+
| `challenge-me` | Socratic comprehension quiz on PR changes | `shallow_clone` |
72+
| `eli5` | Explain Like I'm 5 — vulgarize your own code | `shallow_clone` |
73+
| `hot-seat` | Architecture Hot Seat — defend design choices under pressure | `shallow_clone` |
74+
| `pair-debug` | Find the subtle bug Claude injected into your code | `shallow_clone` |
75+
| `test-me` | Predict whether test cases pass or fail on your code | `shallow_clone` |
7276

7377
## Code Style
7478

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ Skills are pluggable Claude Code agent definitions. Each skill is a self-contain
5858
| Skill | Description | Duration |
5959
|-------|-------------|----------|
6060
| **[challenge-me](skills/challenge-me/)** | Socratic comprehension quiz -- probes whether the PR author truly understands their own changes. Generates 3-5 targeted questions, evaluates answers, and produces a score card. | 5-10 min |
61+
| **[eli5](skills/eli5/)** | Explain Like I'm 5 -- can you vulgarize your own code? | 5-8 min |
62+
| **[hot-seat](skills/hot-seat/)** | Architecture Hot Seat -- defend your design choices under pressure. | 5-10 min |
63+
| **[pair-debug](skills/pair-debug/)** | Pair Debug -- find the subtle bug Claude injected into your code. | 5-12 min |
64+
| **[test-me](skills/test-me/)** | Test Me -- predict whether test cases pass or fail on your code. | 5-8 min |
6165

6266
Want to create your own? See [Creating Skills](docs/creating-skills.md).
6367

apps/web/package-lock.json

Lines changed: 433 additions & 489 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/web/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
"devDependencies": {
1414
"@eslint/js": "^10.0.1",
1515
"@tailwindcss/vite": "^4.2.2",
16-
"@testing-library/jest-dom": "^6.9.1",
1716
"@testing-library/react": "^16.3.2",
1817
"@types/react": "^19.2.14",
1918
"@types/react-dom": "^19.2.3",
@@ -27,6 +26,8 @@
2726
"vitest": "^4.1.4"
2827
},
2928
"dependencies": {
29+
"@shikijs/langs": "^4.0.2",
30+
"@shikijs/themes": "^4.0.2",
3031
"react": "^19.2.5",
3132
"react-dom": "^19.2.5",
3233
"react-markdown": "^10.1.0",

apps/web/src/features/dashboard/StatusBadge.tsx

Lines changed: 0 additions & 26 deletions
This file was deleted.

apps/web/src/features/session/ThinkingBlock.tsx

Lines changed: 0 additions & 33 deletions
This file was deleted.

apps/web/src/features/session/ToolUseBlock.tsx

Lines changed: 0 additions & 110 deletions
This file was deleted.

apps/web/src/shared/components/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,3 @@ export { GrainOverlay } from './GrainOverlay'
88
export { Overline } from './Overline'
99
export { StatCard } from './StatCard'
1010
export { TerminalBlock } from './TerminalBlock'
11-
export { Topbar } from './Topbar'

docs/creating-skills.md

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -228,20 +228,6 @@ Or test via the full helPRs stack:
228228

229229
---
230230

231-
## Optional Files
232-
233-
Skills can include additional files referenced from `CLAUDE.md`:
234-
235-
| File | Purpose |
236-
|------|---------|
237-
| `examples/` | Example inputs/outputs for testing |
238-
| `scoring.md` | Detailed scoring rubric |
239-
| `context.md` | Additional domain context |
240-
241-
These must be explicitly referenced in `CLAUDE.md` -- Claude Code will not discover them automatically.
242-
243-
---
244-
245231
## Output Conventions
246232

247233
For `sse_stream` skills, the frontend parses known patterns from the streamed output:

0 commit comments

Comments
 (0)