- name
- jsdlc-refine
- description
- Run the review-fix-rereview cycle (指摘→修正→再レビュー) on any J-model artifact until no NG remains or the cycle limit is reached. Use when the user asks to clean up a document, apply review findings and re-check, iterate until it passes, or 再レビュー.
# Refine cycle (指摘 → 修正 → 再レビュー)
Request / arguments: $ARGUMENTS — the target document, optionally `max=<n>`.
This skill owns the loop. It does not own the checks: at every step it uses the
artifact's own skill, so detail-design rules apply to a detail design and test
case rules to a test specification. Never inline those rules here.
Read `docs-jsdlc/rules/review-checklist.md` §1 (severity) and §9 (defect
feedback) before starting.
## Resolve the artifact skill
| Target file prefix | Skill to use each cycle |
|---|---|
| `BD-` | `jsdlc-basic-design` |
| `DD-` | `jsdlc-detail-design` |
| `API-` | `jsdlc-api-spec` |
| `UT-` / `IT-` / `ST-` | `jsdlc-test-case` |
| source code | `jsdlc-implement` |
| mixed or unclear | `jsdlc-review` for review, then the owning skill for each fix |
## The loop
```
cycle = 0
max = 3 unless the user gave max=<n>
LOOP:
1. Run <artifact skill> in review mode.
Count NG and 要確認. Record the checks run, and keep the
要確認 list itself — not just its length.
2. IF cycle > 0: reconcile this cycle's 要確認 against the last.
Every one that is gone must be gone for a stated reason:
it is now a `Q-NNN` in `open-questions.md`, or the user
answered it in this session. A 要確認 that disappeared because
the document now asserts an answer is a new NG — the loop
answered a question that was not its to answer. Restore it,
count it, and do not exit this cycle.
3. IF NG == 0 and step 2 found nothing:
-> exit the loop, go to Report.
(要確認 remaining is not a failure. It is a decision waiting
for a human, and the loop must never resolve one.)
4. IF cycle >= max:
-> STOP. Do not fix anything further.
-> Report: "<max> cycles run, <n> NG still open."
-> List each surviving NG with why it did not close.
-> Ask the user to choose: keep going, accept with the NG
recorded as risk, or abort. Never choose for them.
5. Run <artifact skill> in modify mode against the newest review report.
Fix every NG. Apply the §9 follow-through for each NG class.
6. Re-check only the sections touched in step 5 before looping —
a fix that creates a new NG must be caught in the same cycle,
not the next one.
7. cycle++, LOOP
```
## Rules that hold at every cycle
1. **A clean count is not a pass.** Zero NG only means zero NG *found*. If a
cycle ran fewer checks than the previous cycle, say so — the drop is more
interesting than the count.
2. **Never close an NG by lowering its severity.** Reclassifying an NG as
要確認 to end the loop is itself an NG, and the loop must report it.
3. **要確認 never blocks the exit and never gets decided.** They accumulate in
the register with a provisional assumption and a named decider. Writing a
confident answer into the document — a transaction scope, a cut-off time, a
locking strategy the code does not show — is not closing the question, it is
inventing the answer. Every 要確認 raised in any cycle appears in the final
report and in `open-questions.md`; a run that ends with fewer questions than
it raised has lost some, and must say which.
4. **Every cycle leaves a trace.** One review report per cycle, dated and
numbered — `<target>-review-<YYYYMMDD>-c<n>.md` from the second cycle on.
The client's reviewer reads the sequence, not just the last file.
5. **A cycle that changes nothing ends the loop.** If modify mode reports no
edits, stop and escalate: the findings are not actionable as written.
## Report
State, in this order:
- Cycles run, and why the loop ended (clean / limit / no-change).
- NG at cycle 1 → NG at exit.
- Every NG closed, with the follow-through applied to each (§9).
- Every 要確認 promoted, with its `Q-NNN` and decider.
- Any NG still open, quoted, with what is blocking it.
- Total checks run in the final cycle.
Do not report a document as finished while an NG is open. Say plainly that it
still fails, and what the client's reviewer will find.
GitHubで見る