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:
minsung
2026-04-07 13:57:20 +09:00
parent a48a8a2d1d
commit 7ffbb1f757
47 changed files with 1886 additions and 11 deletions

View 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.

View 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.

View 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.

View 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.

View 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.

View 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`.

View 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.