Set up AI dev environment for recordingtest (#2)
- CLAUDE.md with collaboration rules and Planner/Generator/Evaluator cycle - .claude/ agents, commands, skills, hooks per Claude Code conventions - Sprint Contracts for sut-prober, normalizer, recorder, player, diff-reporter - SUT catalog (EG-BIM Modeler, 187 plugins) and .gitignore excluding SUT tree - PROGRESS.md / PLAN.md as shared agent handoff state - Solution scaffold targeting sut-prober PoC Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
21
.claude/commands/approve.md
Normal file
21
.claude/commands/approve.md
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
name: approve
|
||||
description: Promote a received baseline to approved after human confirmation. Usage /approve <scenario-name>
|
||||
allowed-tools: Read, Bash, Write, Glob
|
||||
---
|
||||
|
||||
Promote a received golden file to an approved baseline.
|
||||
|
||||
Scenario name: `$ARGUMENTS`
|
||||
|
||||
Steps:
|
||||
|
||||
1. Refuse if `$ARGUMENTS` is empty. Ask the user for a scenario name.
|
||||
2. Locate `baselines/$ARGUMENTS.received.*` files. Refuse if none exist.
|
||||
3. Show the diff against the existing `*.approved.*` (if any) so the user can confirm the intent.
|
||||
4. **Ask the user to type an approval reason** (intentional change / bug fix / new feature etc.). Record it.
|
||||
5. Copy `*.received.*` → `*.approved.*`.
|
||||
6. Write an entry to `docs/history/YYYY-MM-DD_approve-$ARGUMENTS.md` with the reason, diff summary, context usage, and duration.
|
||||
7. Update `PROGRESS.md` baseline log.
|
||||
|
||||
Never approve without an explicit reason from the user.
|
||||
16
.claude/commands/contract.md
Normal file
16
.claude/commands/contract.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
name: contract
|
||||
description: Create or update a Sprint Contract for a module/feature via the planner agent. Usage /contract <module-name or short description>
|
||||
allowed-tools: Read, Write, Edit, Agent, Glob, Grep
|
||||
---
|
||||
|
||||
Create a Sprint Contract and PLAN.md entry for: `$ARGUMENTS`
|
||||
|
||||
Delegate to the **planner** subagent. The planner must:
|
||||
|
||||
1. Read `PLAN.md`, `PROGRESS.md`, `CLAUDE.md`, and relevant memory.
|
||||
2. Write `docs/contracts/<slug>.md` with the Sprint Contract template (Goal, DoD, Interfaces, Out of scope, Evaluation plan, Risks).
|
||||
3. Add or update the corresponding `PLAN.md` entry with priority and dependencies.
|
||||
4. Return a short briefing with file paths.
|
||||
|
||||
If `$ARGUMENTS` is empty, ask the user what to plan. Never write code into `src/` — planning only.
|
||||
20
.claude/commands/evaluate.md
Normal file
20
.claude/commands/evaluate.md
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: evaluate
|
||||
description: Grade a completed module against its Sprint Contract via the evaluator agent. Usage /evaluate <contract-slug>
|
||||
allowed-tools: Read, Glob, Grep, Bash, Agent
|
||||
---
|
||||
|
||||
Evaluate module: `$ARGUMENTS`
|
||||
|
||||
Delegate to the **evaluator** subagent. It must:
|
||||
|
||||
1. Read `docs/contracts/$ARGUMENTS.md`. Refuse if missing.
|
||||
2. For each Definition-of-Done item, run the verification named in the contract's Evaluation plan.
|
||||
3. Collect evidence (command output, diffs, file paths).
|
||||
4. Write `docs/contracts/$ARGUMENTS.evaluation.md` with the verdict table.
|
||||
5. Return the verdict to the caller.
|
||||
|
||||
If verdict is **fail**, do NOT mark PROGRESS.md as done — report back so the generator can iterate.
|
||||
If verdict is **pass**, the caller (not the evaluator) may update PROGRESS.md.
|
||||
|
||||
Never let the generator and evaluator be the same agent in a single session.
|
||||
23
.claude/commands/handoff.md
Normal file
23
.claude/commands/handoff.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
name: handoff
|
||||
description: Session handoff — update PROGRESS.md, PLAN.md, and write the history file in one go before ending a work session.
|
||||
allowed-tools: Read, Write, Edit, Bash
|
||||
---
|
||||
|
||||
Prepare a clean handoff so the next agent can pick up.
|
||||
|
||||
Steps:
|
||||
|
||||
1. Read `PROGRESS.md` and `PLAN.md`. If either is missing, create a skeleton.
|
||||
2. Ask the user (or infer from the session) what was completed, what is in progress, and what is blocked.
|
||||
3. Update `PROGRESS.md`:
|
||||
- Move completed items to "Done" with date and artifact paths.
|
||||
- Mark in-progress items with current owner and status.
|
||||
4. Update `PLAN.md`:
|
||||
- Remove completed items.
|
||||
- Add any newly discovered follow-ups.
|
||||
- Re-order priorities if needed.
|
||||
5. Write `docs/history/YYYY-MM-DD_{작업명}.md` with **소요 시간**, **Context 사용량**, 이슈 번호, 산출물.
|
||||
6. Confirm all three files are saved and list their paths.
|
||||
|
||||
Arguments: `$ARGUMENTS` — optional short description to seed the history file title.
|
||||
16
.claude/commands/progress.md
Normal file
16
.claude/commands/progress.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
name: progress
|
||||
description: Print a concise summary of PROGRESS.md and PLAN.md so the agent can decide what to work on next.
|
||||
allowed-tools: Read
|
||||
---
|
||||
|
||||
Read `PROGRESS.md` and `PLAN.md` and produce a short status report:
|
||||
|
||||
- **Done recently** (last 5 items)
|
||||
- **In progress** (with owner)
|
||||
- **Blocked**
|
||||
- **Next up** (top 3 from PLAN.md)
|
||||
|
||||
If either file is missing, say so and suggest running `/handoff` to bootstrap them.
|
||||
|
||||
Keep the report under 20 lines.
|
||||
19
.claude/commands/regress.md
Normal file
19
.claude/commands/regress.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
name: regress
|
||||
description: Run the full recordingtest regression suite (or a filtered subset) and triage failures.
|
||||
allowed-tools: Bash, Read, Glob, Grep, Agent, Write
|
||||
---
|
||||
|
||||
Run the regression suite.
|
||||
|
||||
Steps:
|
||||
|
||||
1. Verify the runner exists. If `src/Recordingtest.Runner/` is not yet built, stop and tell the user the suite is not set up.
|
||||
2. Execute the runner with optional filter `$ARGUMENTS` (empty = all scenarios).
|
||||
3. Collect results from the runner output folder.
|
||||
4. For each failed scenario, delegate to the `diff-triager` subagent with the baseline/received/artifact paths.
|
||||
5. Summarize: passed / failed / triage buckets.
|
||||
6. If any failures are classified as "normalization gap", list suggested rules at the end.
|
||||
7. Append run summary to `PROGRESS.md` under a "Recent regression runs" section.
|
||||
|
||||
Do NOT auto-approve or mutate baselines. Human confirmation is required via `/approve`.
|
||||
19
.claude/commands/sut-probe.md
Normal file
19
.claude/commands/sut-probe.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
name: sut-probe
|
||||
description: Static probe of the EG-BIM Modeler SUT — enumerate plugins, snapshot Json/ configs, list engine assemblies. Does NOT launch the SUT.
|
||||
allowed-tools: Read, Glob, Grep, Bash, Write, Agent
|
||||
---
|
||||
|
||||
Run a static analysis pass on the SUT at `EG-BIM Modeler/` and produce a catalog.
|
||||
|
||||
Delegate to the `sut-explorer` subagent with this scope:
|
||||
|
||||
1. List every plugin folder under `EG-BIM Modeler/Plugins/` and count them.
|
||||
2. Read each `EG-BIM Modeler/Json/*.json` and flag non-deterministic fields.
|
||||
3. List core assemblies (`HmEG*.dll`, `Editor*.dll`, `HmGeometry*.dll`) with file sizes.
|
||||
4. Write the catalog to `docs/sut-catalog/catalog.md` and `docs/sut-catalog/plugins.json`.
|
||||
5. Report a concise summary back here.
|
||||
|
||||
Arguments (optional): $ARGUMENTS — if provided, restrict analysis to that subpath (e.g. `Plugins/EgBoxPlugin`).
|
||||
|
||||
After the subagent reports, update `PROGRESS.md` with the catalog timestamp.
|
||||
Reference in New Issue
Block a user