Claude-skill-registry idea-normalizer
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/idea-normalizer" ~/.claude/skills/majiayu000-claude-skill-registry-idea-normalizer && rm -rf "$T"
skills/data/idea-normalizer/SKILL.mdIdea Normalizer — Agent Instructions
Invocation
Run this command with an idea folder id:
/idea-normalizer <IDEA_ID>
Where:
(must be a single token; no spaces)IDEA_REF = $ARGUMENTS
If
IDEA_REF is missing/empty, STOP and ask the user to rerun with an idea id.
Resolve IDEA_ID (required)
Before using any paths, resolve the idea folder:
- Call
withvf.resolve_idea_ididea_ref = $ARGUMENTS - Store the returned
asidea_idIDEA_ID - Use
for all paths, YAML headers, and run log entriesIDEA_ID
Canonical paths (repo-relative)
Idea root:
docs/forge/ideas/<IDEA_ID>/
Inputs:
docs/forge/ideas/<IDEA_ID>/inputs/idea.md
(optional)docs/forge/ideas/<IDEA_ID>/inputs/normalizer_config.md
(optional; created in interactive mode)docs/forge/ideas/<IDEA_ID>/inputs/normalizer_answers.md
Outputs:
- Run folder:
docs/forge/ideas/<IDEA_ID>/runs/<RUN_ID>/ - Latest folder:
docs/forge/ideas/<IDEA_ID>/latest/
Per-idea logs:
(append-only)docs/forge/ideas/<IDEA_ID>/run_log.md
(rolling status)docs/forge/ideas/<IDEA_ID>/manifest.md
Directory handling
Ensure these directories exist (create them if missing):
docs/forge/ideas/<IDEA_ID>/inputs/docs/forge/ideas/<IDEA_ID>/latest/docs/forge/ideas/<IDEA_ID>/runs/docs/forge/ideas/<IDEA_ID>/runs/<RUN_ID>/
If you cannot create directories or write files directly, output the artifacts as separate markdown blocks labeled with their target filenames and include a short note listing missing directories.
Inputs
Required
atidea.mddocs/forge/ideas/<IDEA_ID>/inputs/idea.md
Optional
atnormalizer_config.mddocs/forge/ideas/<IDEA_ID>/inputs/normalizer_config.md
atnormalizer_answers.md
(if it exists)docs/forge/ideas/<IDEA_ID>/inputs/normalizer_answers.md
If
idea.md is missing, STOP and report the expected path.
Context (include file contents)
Use file references to pull content into context:
-
Raw idea: @docs/forge/ideas/<IDEA_ID>/inputs/idea.md
-
Optional config (only if it exists): @docs/forge/ideas/<IDEA_ID>/inputs/normalizer_config.md
-
Optional prior answers (only if it exists): @docs/forge/ideas/<IDEA_ID>/inputs/normalizer_answers.md
Run identity
Generate:
as a filesystem-safe id (Windows-safe, noRUN_ID
), e.g.::2026-01-10T19-22-41Z_run-8f3c
Also capture:
as ISO-8601 time (may include timezone offset)generated_at
Outputs (required)
Always write a draft first
- Write a draft to the run folder:
docs/forge/ideas/<IDEA_ID>/runs/<RUN_ID>/idea_normalized_draft.md
- Write the Open Questions list for the run:
docs/forge/ideas/<IDEA_ID>/runs/<RUN_ID>/open_questions.md
Final outputs (only after questions are resolved OR if no questions exist)
- Write final
to:idea_normalized.md
docs/forge/ideas/<IDEA_ID>/runs/<RUN_ID>/idea_normalized.md
Then also update:
(overwrite allowed)docs/forge/ideas/<IDEA_ID>/latest/idea_normalized.md
- Append an entry to:
docs/forge/ideas/<IDEA_ID>/run_log.md
- Update (or create) the per-idea manifest at:
docs/forge/ideas/<IDEA_ID>/manifest.md
Interactive Open Questions Resolution (IMPORTANT)
Goal: avoid leaving key decisions as “Open Questions†when the user can answer them now.
Default behavior
- If Open Questions exist, you MUST ask the user those questions and capture their answers.
- Exception: if
explicitly setsnormalizer_config.md
, then proceed without asking and keep Open Questions as-is.interactive: false
Phase 1 — Draft + ask
After producing
idea_normalized_draft.md and open_questions.md:
- Present the questions to the user as a numbered list.
- Ask the user to answer in the same numbered format.
- STOP and wait for the user’s reply.
Also append a run_log entry with:
- Status:
NEEDS_USER_INPUT - Run-ID:
<RUN_ID> - Output draft paths
Phase 2 — Capture answers + finalize
When the user replies:
- Save the user’s answers to:
docs/forge/ideas/<IDEA_ID>/inputs/normalizer_answers.md- Append a new section with header:
### <ISO-8601> — Answers for <RUN_ID>
- Append a new section with header:
- Produce final
:idea_normalized.md
- Move answered items into the correct sections (Constraints, Preferences, Outputs, etc.)
- Remove or reword answered questions from “Open Questionsâ€
- Keep any truly unresolved items in “Open Questionsâ€
-
Write final outputs to
andruns/<RUN_ID>/idea_normalized.mdlatest/idea_normalized.md -
Append a new run_log entry with:
- Status:
(orSUCCESS
if some questions remain unanswered)SUCCESS_WITH_WARNINGS - Notes: include a bullet like
Resolved N open questions; remaining M
Definition: Normalization
Normalization means:
- Preserve meaning and scope of the source idea
- Re-express in consistent sections/terminology
- Make implicit structure explicit (inputs, workflow, outputs, constraints, exclusions)
- Record uncertainties instead of guessing
Normalization does NOT mean:
- Adding new requirements
- Choosing tech stacks not stated in the source
- Writing implementation plans, epics, features, or tasks
Scope & Rules
You MUST
- Preserve original intent and scope from
idea.md - Use the required section template below
- Convert free-form text into concise bullets where appropriate
- Mark assumptions explicitly as assumptions
- Capture constraints and exclusions explicitly
- Include “Open Questions†for missing decisions (only those that remain after interactive resolution)
You MUST NOT
- Introduce new scope or features not present in
idea.md - Redesign the system
- Produce backlog items
- Remove meaningful nuance; if unsure, keep detail and place it in the correct section
How to Normalize (Method)
- Read entire
onceidea.md - Extract key statements into scratch (do not output scratch)
- Map statements into the standard sections
- Rewrite in consistent modality:
- Must / Should / May
- Handle contradictions conservatively (record in Open Questions)
- Keep it brief but complete (prefer bullets)
Output Format: idea_normalized.md
(Markdown + YAML header)
idea_normalized.mdWrite
idea_normalized.md with a YAML header followed by required sections.
YAML header (example)
--- doc_type: idea_normalized idea_id: "<IDEA_ID>" run_id: "<RUN_ID>" generated_by: "Idea Normalizer" generated_at: "<ISO-8601>" source_inputs: - "docs/forge/ideas/<IDEA_ID>/inputs/idea.md" configs: - "docs/forge/ideas/<IDEA_ID>/inputs/normalizer_config.md (if used)" - "docs/forge/ideas/<IDEA_ID>/inputs/normalizer_answers.md (if used)" status: "Draft" ---
Required sections
Idea (Normalized)
Summary
(1 short paragraph)
Goals
- ...
Target Users
- ...
Primary Use Cases
- ...
Inputs
- ...
Outputs
- ...
Conceptual Workflow
- ...
- ...
Core Capabilities
- The system can ...
Constraints
- ...
Preferences
- ...
Out-of-Scope / Exclusions
- ...
Terminology
- Term: meaning
Open Questions / Ambiguities
- ...
Logging Requirements: run_log.md
(append-only)
run_log.mdAppend an entry with this shape:
### <ISO-8601 timestamp> — Idea Normalizer - Idea-ID: <IDEA_ID> - Run-ID: <RUN_ID> - Inputs: - docs/forge/ideas/<IDEA_ID>/inputs/idea.md - docs/forge/ideas/<IDEA_ID>/inputs/normalizer_config.md (if present) - docs/forge/ideas/<IDEA_ID>/inputs/normalizer_answers.md (if present) - Outputs: - runs/<RUN_ID>/idea_normalized_draft.md - runs/<RUN_ID>/open_questions.md - runs/<RUN_ID>/idea_normalized.md (final, if produced) - latest/idea_normalized.md (final, if produced) - Notes: - <1–5 bullets on key clarifications or ambiguities> - Status: NEEDS_USER_INPUT | SUCCESS | SUCCESS_WITH_WARNINGS | FAILED
Manifest updates: manifest.md
(per-idea)
manifest.mdIf
manifest.md does not exist, create it using the template below.
If it exists, update ONLY the keys under the Idea section.
Manifest template (if creating new)
# Manifest — <IDEA_ID> ## Idea - idea_normalized_status: Draft - last_updated: <YYYY-MM-DD> - last_run_id: <RUN_ID> - latest_outputs: - latest/idea_normalized.md - notes: - <optional bullets>
Do not add epics/features/tasks here.
Failure handling
If
idea.md is extremely short/vague:
- Produce the normalized template anyway
- Put missing items into Open Questions
- Do not invent details