Help us improve
Share bugs, ideas, or general feedback.
From insight-blueprint
Guides structured revision of an analysis design based on review comments. Reads review feedback via MCP, tracks progress per comment, and helps fix each issue. Triggers: "レビューを直して", "指摘を反映して", "revision対応して", "fix review", "address comments", "レビュー修正".
npx claudepluginhub etoyama/insight-blueprint --plugin insight-blueprintHow this skill is triggered — by the user, by Claude, or both
Slash command
/insight-blueprint:analysis-revision [design_id][design_id]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Guides the user through a structured revision workflow for an analysis design
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Guides the user through a structured revision workflow for an analysis design that has received review comments. Reads review feedback via MCP, creates a persistent tracking file for per-comment progress, and helps address each comment through interactive dialogue.
revision_requested and review comments need to be addressedrevision_requested statusIf $ARGUMENTS contains a design ID (e.g., "FP-H01"), use it directly.
Otherwise, call list_analysis_designs(status="revision_requested") and ask the user to select.
get_analysis_design(design_id) -- load the design.
Status check: If status != "revision_requested", display an error and exit:
このデザイン ({design_id}) は revision_requested 状態ではない (現在: {status})。
レビューで修正依頼が出た後にこのスキルを使おう。
get_review_comments(design_id) -- get all review batches.
Batch selection (important -- do NOT just pick the newest batch overall):
status_after == "revision_requested"created_atIf no qualifying batch found (all batches have status_after != "revision_requested"):
revision_requested に対応するレビューバッチが見つからない。
レビューが WebUI 経由で提出されているか確認しよう。
Exit.
Display situation summary:
-- Revision: {design_id} --
Title: {title}
Status: {status}
Target batch: {batch.id} ({batch.created_at})
Reviewer: {batch.reviewer}
Comments: {len(batch.comments)} items
Read .insight/designs/{design_id}_revision.yaml using the Read tool.
If file exists AND batch_id matches the target batch -> reuse existing tracking (session resume).
Show: "前回のセッションから再開する。未対応のコメントから進めよう。"
If file does not exist OR batch_id does not match the target batch -> create new tracking file.
If file exists but is corrupted (parse error) -> treat as non-existent and create new tracking file. Show: "tracking file が破損していたため、新しいバッチから再作成する。"
New tracking file schema:
batch_id: "{target_batch.id}"
created_at: "{now_jst in ISO 8601 format}"
items:
- index: 0
fingerprint: "{fingerprint}"
comment_summary: "{first 50 chars of comment}"
target_section: "{target_section or null}"
status: "open"
addressed_at: null
- index: 1
fingerprint: "{fingerprint}"
comment_summary: "{first 50 chars of comment}"
target_section: "{target_section or null}"
status: "open"
addressed_at: null
# ... one item per comment in the batch
Fingerprint generation formula (stable identity key for cross-session matching):
import hashlib
fingerprint = hashlib.sha256(f"{comment}|{target_section or ''}".encode()).hexdigest()[:8]
The fingerprint is based on comment content rather than index position, so it remains stable even if comments are reordered. It is used for reconciliation when resuming a session.
Write the tracking file using the Write tool. Write the full YAML content to
.insight/designs/{design_id}_revision.yaml.
Note: In production code, atomic writes should use the tempfile + os.replace() pattern.
Since the skill operates through Claude's Write tool, the tool handles file writing directly.
For each item in the tracking file where status == "open":
Display the comment with context:
-- Comment {index+1}/{total} --
Section: {target_section or "general"}
Comment: {full comment text from the batch}
Target content: {target_content from the batch, if present}
Current value: {current value of that section from get_analysis_design, if target_section is set}
Status: {status}
To get the current value, call get_analysis_design(design_id) and extract
the field matching target_section (e.g., if target_section == "hypothesis_statement",
show design.hypothesis_statement).
Ask user for direction:
どう対応する?
1. fix -- 修正する (修正内容を一緒に考える)
2. skip -- 対応しない (wontfix としてマーク)
3. discuss -- 方針を相談したい
If fix:
update_analysis_design(design_id, **changes)status: "addressed", addressed_at: "{now_jst}"If skip (wontfix):
status: "wontfix", addressed_at: "{now_jst}"If discuss:
Write updated tracking file after each comment is resolved.
Write the full YAML content to .insight/designs/{design_id}_revision.yaml
using the Write tool.
After all items have been processed, verify: every item has status of either
"addressed" or "wontfix".
Show summary:
-- Revision Summary --
Total: {total} comments
Addressed: {addressed_count}
Won't fix: {wontfix_count}
Propose re-submission:
全コメントへの対応が完了した。in_review に戻してレビュアーに再確認を依頼する?
If yes: transition_design_status(design_id, "in_review")
Suggest next steps:
| Tool | Used for |
|---|---|
get_analysis_design(design_id) | Load design details and check status |
list_analysis_designs(status?) | Find designs in revision_requested status |
get_review_comments(design_id) | Get review batches with comments |
update_analysis_design(design_id, ...) | Apply fixes to design fields |
transition_design_status(design_id, new_status) | Re-submit for review (-> in_review) |
.insight/designs/{design_id}_revision.yaml
This file is skill-managed data, not MCP-managed (see YAML Format Reference in analysis-design SKILL.md).
| Situation | Action |
|---|---|
| Design not found | Show error, suggest list_analysis_designs() |
| Design not in revision_requested status | Show current status, exit with guidance |
| No revision_requested batch found | Show message, suggest checking WebUI review |
| Tracking file corrupted | Re-create from target batch, warn user |
| update_analysis_design fails | Show error, ask user to retry or adjust |
| Session interrupted mid-loop | On next run, resume from tracking file (open items) |
| From | To | When |
|---|---|---|
| WebUI review (revision_requested) | -> /analysis-revision | Review submitted with revision_requested status |
| /analysis-revision | -> /analysis-design | Major redesign needed: "大きな方針変更が必要なら /analysis-design {id}" |
| /analysis-revision | -> /analysis-journal | Need to investigate before fixing: "調査してから修正するなら /analysis-journal {id}" |
| /analysis-revision | -> (WebUI review) | After transition to in_review, reviewer re-reviews in WebUI |