cadence-skill-installer 0.2.15 → 0.2.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/skill/SKILL.md +9 -8
- package/skill/agents/openai.yaml +1 -1
- package/skill/skills/ideation-updater/SKILL.md +17 -15
- package/skill/skills/ideation-updater/agents/openai.yaml +1 -1
- package/skill/skills/ideator/SKILL.md +23 -20
- package/skill/skills/ideator/agents/openai.yaml +1 -1
- package/skill/skills/prerequisite-gate/SKILL.md +11 -9
- package/skill/skills/prerequisite-gate/agents/openai.yaml +1 -1
- package/skill/skills/project-progress/SKILL.md +10 -8
- package/skill/skills/project-progress/agents/openai.yaml +1 -1
- package/skill/skills/researcher/SKILL.md +15 -13
- package/skill/skills/researcher/agents/openai.yaml +1 -1
- package/skill/skills/scaffold/SKILL.md +1 -1
- package/skill/skills/scaffold/agents/openai.yaml +1 -1
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -53,20 +53,21 @@ description: Structured project operating system for end-to-end greenfield or br
|
|
|
53
53
|
## Manual Subskill Safety Gate
|
|
54
54
|
1. If the user manually requests a Cadence subskill, first resolve `PROJECT_ROOT` with `python3 scripts/resolve-project-root.py`.
|
|
55
55
|
2. Run `python3 scripts/assert-workflow-route.py --skill-name <subskill> --project-root "$PROJECT_ROOT"` before executing that subskill.
|
|
56
|
-
3.
|
|
57
|
-
4.
|
|
56
|
+
3. Ensure that direct subskill execution still applies this skill's Repo Status Gate and Git Checkpoints rules.
|
|
57
|
+
4. If route assertion fails, stop and surface the exact script error.
|
|
58
|
+
5. Do not execute state-changing subskill steps when assertion fails.
|
|
58
59
|
|
|
59
60
|
## Ideation Flow
|
|
60
|
-
1. When scaffold and prerequisite both complete in this same conversation for a net-new project
|
|
61
|
-
2.
|
|
62
|
-
3.
|
|
63
|
-
4. If the user
|
|
64
|
-
5.
|
|
61
|
+
1. When scaffold and prerequisite both complete in this same conversation for a net-new project and route advances to `ideator`, force a subskill handoff and end with this exact line: `Start a new chat and either say "help me define my project" or share your project brief.`
|
|
62
|
+
2. In subsequent conversations, if the workflow route is `ideator`, do not rerun prerequisite gate.
|
|
63
|
+
3. If the user asks to define the project or provides a brief while route is `ideator`, invoke `skills/ideator/SKILL.md`.
|
|
64
|
+
4. If route is `ideator` and the user has not provided ideation input yet, prompt with the same handoff line and wait.
|
|
65
|
+
5. After ideation is completed and workflow advances to `researcher`, force a subskill handoff and end with this exact line: `Start a new chat and say "continue research".`
|
|
65
66
|
|
|
66
67
|
## Research Flow
|
|
67
68
|
1. If the workflow route is `researcher`, invoke `skills/researcher/SKILL.md`.
|
|
68
69
|
2. Enforce one research pass per conversation so context stays bounded.
|
|
69
|
-
3. When the researcher flow reports additional passes remain, end with
|
|
70
|
+
3. When the researcher flow reports additional passes remain (`handoff_required=true`), end with this exact line: `Start a new chat and say "continue research".`
|
|
70
71
|
4. Continue routing to researcher on subsequent chats until workflow reports the research task complete.
|
|
71
72
|
|
|
72
73
|
## Ideation Update Flow
|
package/skill/agents/openai.yaml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Cadence"
|
|
3
3
|
short_description: "Lifecycle + delivery system for structured project execution"
|
|
4
|
-
default_prompt: "Use Cadence to guide this project from lifecycle setup through phased execution, traceability, audit, and milestone completion. Always read and apply the active SOUL persona from .cadence/SOUL.json (fallback: SOUL.json). Keep user-facing responses concise and outcome-focused, and never expose internal skill-routing or command-execution traces unless the user explicitly asks. At the start of each Cadence turn, run scripts/check-project-repo-status.py, run scaffold only when .cadence is missing, then run scripts/read-workflow-state.py and treat route.skill_name as authoritative for the next state-changing skill. Invoke skills/prerequisite-gate/SKILL.md only when route.skill_name is prerequisite-gate. If
|
|
4
|
+
default_prompt: "Use Cadence to guide this project from lifecycle setup through phased execution, traceability, audit, and milestone completion. Always read and apply the active SOUL persona from .cadence/SOUL.json (fallback: SOUL.json). Keep user-facing responses concise and outcome-focused, and never expose internal skill-routing or command-execution traces unless the user explicitly asks. At the start of each Cadence turn, run scripts/check-project-repo-status.py and treat repo_enabled from output as the authoritative push mode (if false, keep commits local-only), run scaffold only when .cadence is missing, then run scripts/read-workflow-state.py and treat route.skill_name as authoritative for the next state-changing skill. Invoke skills/prerequisite-gate/SKILL.md only when route.skill_name is prerequisite-gate. If scaffold and prerequisite complete in-thread and route advances to ideator, force subskill handoff with: Start a new chat and either say \"help me define my project\" or share your project brief. In later chats, if route.skill_name is ideator, do not rerun prerequisite; if the user asks to define the project or provides a brief, invoke skills/ideator/SKILL.md. After ideator completes and route advances to researcher, force subskill handoff with: Start a new chat and say \"continue research\". If route.skill_name is researcher, invoke skills/researcher/SKILL.md and enforce one pass per conversation; when more passes remain, end with: Start a new chat and say \"continue research\". If user intent indicates resuming/continuing work or asking progress, invoke skills/project-progress/SKILL.md first, report current phase, then route to the next step. If the user manually requests a Cadence subskill, resolve PROJECT_ROOT with scripts/resolve-project-root.py and then run scripts/assert-workflow-route.py --skill-name <subskill> --project-root \"$PROJECT_ROOT\" before any state-changing actions. Ensure direct subskill execution follows the same Git Checkpoints policy from this main skill: run scripts/finalize-skill-checkpoint.py with each subskill's configured --scope/--checkpoint and --paths ., allow status=no_changes without failure, and treat checkpoint or push failures as blocking errors surfaced verbatim."
|
|
@@ -10,33 +10,34 @@ description: Discuss, audit, and update existing project ideation in .cadence/ca
|
|
|
10
10
|
3. Route first-time concept discovery to Cadence new-chat handoff: `Start a new chat and either say "help me define my project" or share your project brief.`
|
|
11
11
|
4. Resolve project root by running `python3 ../../scripts/resolve-project-root.py --require-cadence` and store stdout in `PROJECT_ROOT`.
|
|
12
12
|
5. Resolve helper scripts dir by running `python3 ../../scripts/resolve-project-scripts-dir.py --project-root "$PROJECT_ROOT"` and store stdout in `CADENCE_SCRIPTS_DIR`.
|
|
13
|
-
6.
|
|
13
|
+
6. Run `python3 "$CADENCE_SCRIPTS_DIR/check-project-repo-status.py" --project-root "$PROJECT_ROOT"` and parse the JSON output. Treat `repo_enabled` as the authoritative push mode (`false` means local-only commits).
|
|
14
|
+
7. First message behavior in this skill conversation:
|
|
14
15
|
- Run `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/expose-ideation.py"` and use the JSON output as active AI context.
|
|
15
16
|
- Run `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/render-ideation-summary.py"` and show that human-readable summary to the user.
|
|
16
17
|
- Ask one intent-setting question: discussion only, add, change, or remove.
|
|
17
|
-
|
|
18
|
+
8. Run the conversation one step at a time:
|
|
18
19
|
- Ask exactly one question per turn.
|
|
19
20
|
- Keep the full current project idea in mind while focusing on the selected area.
|
|
20
21
|
- After each user answer, restate what changed and what remains unchanged.
|
|
21
|
-
|
|
22
|
+
9. Support deep-dive updates for missing aspects:
|
|
22
23
|
- If user says they forgot a topic, zoom into that topic and drill until clear.
|
|
23
24
|
- Adapt topic depth to domain context (for example mechanics/systems, audience, scope boundaries, tech/process, risks, success criteria).
|
|
24
25
|
- Avoid hard-coded question trees; derive next question from current context.
|
|
25
|
-
|
|
26
|
+
10. Keep `research_agenda` synchronized with ideation updates:
|
|
26
27
|
- Re-infer and update research topics when scope, domain, audience, implementation approach, constraints, or risks change.
|
|
27
28
|
- Keep entity ownership relationships valid: topics referencing an entity must stay in that entity's owner block.
|
|
28
29
|
- Preserve untouched research blocks and entities when they remain relevant.
|
|
29
|
-
|
|
30
|
+
11. Distinguish interaction modes clearly:
|
|
30
31
|
- Discussion mode: analyze options and tradeoffs, do not persist.
|
|
31
32
|
- Add/modify/remove mode: build the full updated ideation object before persistence.
|
|
32
|
-
|
|
33
|
+
12. Before any write, present a short change plan with:
|
|
33
34
|
- Fields to add
|
|
34
35
|
- Fields to update
|
|
35
36
|
- Fields to remove
|
|
36
37
|
- Fields unchanged
|
|
37
38
|
- Research blocks/entities/topics affected
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
13. Persist only after user confirmation.
|
|
40
|
+
14. Use this canonical ideation payload contract and do not inspect Cadence scripts to infer shape during normal operation:
|
|
40
41
|
- Payload root must be a JSON object representing the full updated `ideation` object.
|
|
41
42
|
- Preserve unchanged fields and update only confirmed changes; avoid dropping existing keys unless user asked to remove them.
|
|
42
43
|
- Keep core ideation fields explicit where relevant, including:
|
|
@@ -52,13 +53,14 @@ description: Discuss, audit, and update existing project ideation in .cadence/ca
|
|
|
52
53
|
- Each entity should include `entity_id`, `label`, `kind`, `aliases`, and `owner_block_id`.
|
|
53
54
|
- If `state.ideation-completed` is currently true, keep at least one research topic in `blocks` because injection with `--completion-state keep` still enforces non-empty topics.
|
|
54
55
|
- Relationship rule: every id listed in topic `related_entities` must exist in `entity_registry`, and that entity's `owner_block_id` must match the topic's block.
|
|
55
|
-
|
|
56
|
+
15. For any persistence mode (add, modify, or remove):
|
|
56
57
|
- Write the complete updated ideation object to `"$PROJECT_ROOT/.cadence/ideation_payload.json"` using the contract above.
|
|
57
58
|
- Run `python3 "$CADENCE_SCRIPTS_DIR/prepare-ideation-research.py" --file "$PROJECT_ROOT/.cadence/ideation_payload.json" --allow-empty`.
|
|
58
59
|
- Run `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/inject-ideation.py" --file "$PROJECT_ROOT/.cadence/ideation_payload.json" --completion-state keep`.
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
16. After persistence, confirm result by running `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/render-ideation-summary.py"`.
|
|
61
|
+
17. Mention that granular research queries are available via `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/query-ideation-research.py"`.
|
|
62
|
+
18. Mention that ideation persistence resets research execution so researcher passes can be replanned from the updated agenda.
|
|
63
|
+
19. At end of this successful skill conversation, run `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/finalize-skill-checkpoint.py" --scope ideation-updater --checkpoint ideation-updated --paths .`.
|
|
64
|
+
20. If `finalize-skill-checkpoint.py` returns `status=no_changes`, continue without failure.
|
|
65
|
+
21. If `finalize-skill-checkpoint.py` reports an error, stop and surface it verbatim.
|
|
66
|
+
22. Ask whether to continue refining another aspect or stop.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Ideation Updater"
|
|
3
3
|
short_description: "Discuss and update existing project ideation"
|
|
4
|
-
default_prompt: "Review current project ideation, discuss changes, and persist approved updates. Resolve PROJECT_ROOT first with scripts/resolve-project-root.py --require-cadence, then resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\". Execute state-changing ideation persistence commands from PROJECT_ROOT so .cadence writes and checkpoint commits target the correct repository. Keep research_agenda synchronized with ideation changes by rebuilding the full updated ideation object. Use the canonical ideation payload contract documented in this skill and do not read script sources just to infer payload shape. Then run scripts/prepare-ideation-research.py and persist with scripts/inject-ideation.py. Keep user-facing responses focused on ideation outcomes and do not expose internal skill-routing or command traces unless the user explicitly asks. If the user is starting ideation from scratch, route them to a fresh chat with: Start a new chat and either say \"help me define my project\" or share your project brief."
|
|
4
|
+
default_prompt: "Review current project ideation, discuss changes, and persist approved updates. Resolve PROJECT_ROOT first with scripts/resolve-project-root.py --require-cadence, then resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\". Run scripts/check-project-repo-status.py --project-root \"$PROJECT_ROOT\" and treat repo_enabled as the authoritative push mode (false means local-only commits). Execute state-changing ideation persistence commands from PROJECT_ROOT so .cadence writes and checkpoint commits target the correct repository. Keep research_agenda synchronized with ideation changes by rebuilding the full updated ideation object. Use the canonical ideation payload contract documented in this skill and do not read script sources just to infer payload shape. Then run scripts/prepare-ideation-research.py and persist with scripts/inject-ideation.py. At end of a successful ideation-updater conversation, run scripts/finalize-skill-checkpoint.py from PROJECT_ROOT with --scope ideation-updater --checkpoint ideation-updated --paths .; allow status=no_changes and treat checkpoint or push failures as blocking errors surfaced verbatim. Keep user-facing responses focused on ideation outcomes and do not expose internal skill-routing or command traces unless the user explicitly asks. If the user is starting ideation from scratch, route them to a fresh chat with: Start a new chat and either say \"help me define my project\" or share your project brief."
|
|
@@ -8,27 +8,28 @@ description: Guide users from a rough concept to a fully defined project idea th
|
|
|
8
8
|
1. Keep user-facing responses focused on ideation content. Do not expose internal skill-routing, command output, or execution traces unless the user explicitly asks.
|
|
9
9
|
2. Resolve project root by running `python3 ../../scripts/resolve-project-root.py --require-cadence` and store stdout in `PROJECT_ROOT`.
|
|
10
10
|
3. Resolve helper scripts dir by running `python3 ../../scripts/resolve-project-scripts-dir.py --project-root "$PROJECT_ROOT"` and store stdout in `CADENCE_SCRIPTS_DIR`.
|
|
11
|
-
4. Run `
|
|
12
|
-
5.
|
|
13
|
-
6.
|
|
14
|
-
7.
|
|
11
|
+
4. Run `python3 "$CADENCE_SCRIPTS_DIR/check-project-repo-status.py" --project-root "$PROJECT_ROOT"` and parse the JSON output. Treat `repo_enabled` as the authoritative push mode (`false` means local-only commits).
|
|
12
|
+
5. Run `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/assert-workflow-route.py" --skill-name ideator --project-root "$PROJECT_ROOT"` and parse the JSON response.
|
|
13
|
+
6. If route assertion fails, stop and surface the exact error to the user.
|
|
14
|
+
7. Start from the user's input and briefly restate your understanding.
|
|
15
|
+
8. Accept two input modes:
|
|
15
16
|
- Conversational discovery from a rough idea.
|
|
16
17
|
- Project brief or project document provided up front.
|
|
17
|
-
|
|
18
|
+
9. If the user provides a project brief or document:
|
|
18
19
|
- Extract the explicit requirements into a working ideation object.
|
|
19
20
|
- Judge whether the brief is execution-ready across the relevant dimensions below.
|
|
20
21
|
- If information is sufficient, present the final ideation summary and ask for confirmation.
|
|
21
22
|
- If information is missing or ambiguous, ask exactly one highest-leverage follow-up question.
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
10. Ask exactly one question at a time. Never ask a batch of questions in a single turn.
|
|
24
|
+
11. After each user answer:
|
|
24
25
|
- Summarize what changed in one short sentence.
|
|
25
26
|
- Decide the next highest-leverage unknown.
|
|
26
27
|
- Ask one natural follow-up question.
|
|
27
|
-
|
|
28
|
+
12. Keep discovery domain-agnostic and adaptive:
|
|
28
29
|
- Derive the question path from the user's domain, any provided document, and prior answers.
|
|
29
30
|
- Do not force fixed templates or hard-coded checklists during discovery.
|
|
30
31
|
- Drill deep where ambiguity remains; move on when the topic is clear.
|
|
31
|
-
|
|
32
|
+
13. Build understanding until the idea is execution-ready. Cover the relevant dimensions for the domain, including:
|
|
32
33
|
- objective and core outcome
|
|
33
34
|
- target audience or user
|
|
34
35
|
- core experience or structure (for example mechanics, flow, chapters, systems)
|
|
@@ -37,15 +38,15 @@ description: Guide users from a rough concept to a fully defined project idea th
|
|
|
37
38
|
- delivery shape (milestones, sequencing, constraints, risks, success signals)
|
|
38
39
|
- assume execution is AI-driven by default; if timeline expectations are discussed, calibrate estimates to roughly 10-100x faster than human-only delivery.
|
|
39
40
|
- do not force timeline-specific prompts just to apply this assumption.
|
|
40
|
-
|
|
41
|
+
14. Build a complete later-phase research agenda from the ideation conversation:
|
|
41
42
|
- Infer all relevant research topics that should be explored in later phases.
|
|
42
43
|
- Keep the agenda domain-agnostic and driven by what the user discussed.
|
|
43
44
|
- Group topics into coherent `research_agenda.blocks`.
|
|
44
45
|
- Track concrete entities (for example technologies, methods, standards, regulations, tools, audiences, channels) in `research_agenda.entity_registry`.
|
|
45
46
|
- Ensure entity relationships are block-consistent: if a topic references an entity, that topic must be in the entity's owner block.
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
15. Do not hard-code assumptions. If you infer something, label it explicitly and ask for confirmation.
|
|
48
|
+
16. When coverage is deep enough, present a final ideation summary and ask for confirmation.
|
|
49
|
+
17. Use this canonical ideation payload contract and do not inspect Cadence scripts to infer shape during normal operation:
|
|
49
50
|
- Payload root must be a JSON object representing the full `ideation` object.
|
|
50
51
|
- Include execution-ready core fields from discovery. Preferred keys:
|
|
51
52
|
- `objective` (string)
|
|
@@ -68,14 +69,16 @@ description: Guide users from a rough concept to a fully defined project idea th
|
|
|
68
69
|
- Each `topics[]` item should include `topic_id`, `title`, `category`, `priority` (`low|medium|high`), `why_it_matters`, `research_questions`, `keywords`, `tags`, and `related_entities`.
|
|
69
70
|
- Each `entity_registry[]` item should include `entity_id`, `label`, `kind`, `aliases`, and `owner_block_id`.
|
|
70
71
|
- Relationship rule: every id listed in topic `related_entities` must exist in `entity_registry`, and that entity's `owner_block_id` must match the topic's block.
|
|
71
|
-
|
|
72
|
+
18. After confirmation, persist ideation programmatically:
|
|
72
73
|
- Create a JSON payload file at `"$PROJECT_ROOT/.cadence/ideation_payload.json"`.
|
|
73
74
|
- Write the full finalized ideation object to that file using the contract above.
|
|
74
75
|
- Run `python3 "$CADENCE_SCRIPTS_DIR/prepare-ideation-research.py" --file "$PROJECT_ROOT/.cadence/ideation_payload.json"`.
|
|
75
76
|
- Run `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/inject-ideation.py" --file "$PROJECT_ROOT/.cadence/ideation_payload.json" --completion-state complete` (this injects ideation and deletes the payload file on success).
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
19. Verify persistence by running `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/get-ideation.py"`.
|
|
78
|
+
20. Mention that granular research queries are available via `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/query-ideation-research.py"`.
|
|
79
|
+
21. Mention that research execution runs in a separate `researcher` phase.
|
|
80
|
+
22. At end of this successful skill conversation, run `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/finalize-skill-checkpoint.py" --scope ideator --checkpoint ideation-completed --paths .`.
|
|
81
|
+
23. If `finalize-skill-checkpoint.py` returns `status=no_changes`, continue without failure.
|
|
82
|
+
24. If `finalize-skill-checkpoint.py` reports an error, stop and surface it verbatim.
|
|
83
|
+
25. After ideation is completed and checkpointing succeeds, force subskill handoff by ending with this exact line: `Start a new chat and say "continue research".`
|
|
84
|
+
26. If the user requests revisions later, regenerate the payload, rerun `prepare-ideation-research.py`, and rerun `inject-ideation.py` from `PROJECT_ROOT`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Ideator"
|
|
3
3
|
short_description: "Step-by-step domain-agnostic ideation"
|
|
4
|
-
default_prompt: "Guide the user from a rough concept or provided project brief to a fully defined idea. Resolve PROJECT_ROOT first with scripts/resolve-project-root.py --require-cadence, then resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\". Before ideation steps, assert route with scripts/assert-workflow-route.py --skill-name ideator --project-root \"$PROJECT_ROOT\" and stop on mismatch. Execute state-changing ideation persistence commands from PROJECT_ROOT so .cadence writes and checkpoint commits target the correct project. Ask one follow-up question at a time for missing critical details, then produce a complete domain-agnostic research agenda inferred from the ideation discussion with blocks, topics, and entity relationships. Use the canonical ideation payload contract documented in this skill (including objective/core_outcome/in_scope/out_of_scope plus research_agenda blocks/entity_registry/topic_index) and do not read script sources just to infer payload shape. Before persistence, run scripts/prepare-ideation-research.py to normalize and validate the research agenda, then inject via scripts/inject-ideation.py. Keep user-facing responses focused on ideation outcomes and do not expose internal skill-routing or command traces unless explicitly requested."
|
|
4
|
+
default_prompt: "Guide the user from a rough concept or provided project brief to a fully defined idea. Resolve PROJECT_ROOT first with scripts/resolve-project-root.py --require-cadence, then resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\". Run scripts/check-project-repo-status.py --project-root \"$PROJECT_ROOT\" and treat repo_enabled as the authoritative push mode (false means local-only commits). Before ideation steps, assert route with scripts/assert-workflow-route.py --skill-name ideator --project-root \"$PROJECT_ROOT\" and stop on mismatch. Execute state-changing ideation persistence commands from PROJECT_ROOT so .cadence writes and checkpoint commits target the correct project. Ask one follow-up question at a time for missing critical details, then produce a complete domain-agnostic research agenda inferred from the ideation discussion with blocks, topics, and entity relationships. Use the canonical ideation payload contract documented in this skill (including objective/core_outcome/in_scope/out_of_scope plus research_agenda blocks/entity_registry/topic_index) and do not read script sources just to infer payload shape. Before persistence, run scripts/prepare-ideation-research.py to normalize and validate the research agenda, then inject via scripts/inject-ideation.py. At end of a successful ideator conversation, run scripts/finalize-skill-checkpoint.py from PROJECT_ROOT with --scope ideator --checkpoint ideation-completed --paths .; allow status=no_changes and treat checkpoint or push failures as blocking errors surfaced verbatim. Keep user-facing responses focused on ideation outcomes and do not expose internal skill-routing or command traces unless explicitly requested."
|
|
@@ -8,12 +8,14 @@ description: Run and persist Cadence prerequisite checks for Python availability
|
|
|
8
8
|
1. Run this only after scaffold routing from `skills/scaffold/SKILL.md`.
|
|
9
9
|
2. Resolve project root by running `python3 ../../scripts/resolve-project-root.py --require-cadence` and store stdout in `PROJECT_ROOT`.
|
|
10
10
|
3. Resolve helper scripts dir by running `python3 ../../scripts/resolve-project-scripts-dir.py --project-root "$PROJECT_ROOT"` and store stdout in `CADENCE_SCRIPTS_DIR`.
|
|
11
|
-
4. Run `python3 "$CADENCE_SCRIPTS_DIR/
|
|
12
|
-
5.
|
|
13
|
-
6.
|
|
14
|
-
7.
|
|
15
|
-
8.
|
|
16
|
-
9.
|
|
17
|
-
10.
|
|
18
|
-
11.
|
|
19
|
-
12.
|
|
11
|
+
4. Run `python3 "$CADENCE_SCRIPTS_DIR/check-project-repo-status.py" --project-root "$PROJECT_ROOT"` and parse the JSON output. Treat `repo_enabled` as the authoritative push mode (`false` means local-only commits).
|
|
12
|
+
5. Run `python3 "$CADENCE_SCRIPTS_DIR/assert-workflow-route.py" --skill-name prerequisite-gate --project-root "$PROJECT_ROOT"` and parse the JSON response.
|
|
13
|
+
6. If route assertion fails, stop and surface the exact error to the user.
|
|
14
|
+
7. Run `python3 "$CADENCE_SCRIPTS_DIR/run-prerequisite-gate.py" --project-root "$PROJECT_ROOT"`.
|
|
15
|
+
8. If the script reports `MISSING_PYTHON3`, stop and ask the user for confirmation to install prerequisites.
|
|
16
|
+
9. Do not continue Cadence lifecycle or delivery execution while prerequisites are missing.
|
|
17
|
+
10. At end of this successful skill conversation, run `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/finalize-skill-checkpoint.py" --scope prerequisite-gate --checkpoint prerequisites-passed --paths .`.
|
|
18
|
+
11. If `finalize-skill-checkpoint.py` returns `status=no_changes`, continue without failure.
|
|
19
|
+
12. If `finalize-skill-checkpoint.py` reports an error, stop and surface it verbatim.
|
|
20
|
+
13. Surface script failures verbatim instead of adding custom fallback logic.
|
|
21
|
+
14. In normal user-facing updates, share the prerequisite outcome without raw command traces or internal routing details unless explicitly requested.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Prerequisite Gate"
|
|
3
3
|
short_description: "Run and persist Cadence prerequisite checks for Python availability"
|
|
4
|
-
default_prompt: "Run Cadence prerequisite checks, verify Python availability, and persist pass state before lifecycle or delivery execution. Resolve PROJECT_ROOT first with scripts/resolve-project-root.py --require-cadence, then resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\". Before running prerequisite actions, assert route with scripts/assert-workflow-route.py --skill-name prerequisite-gate --project-root \"$PROJECT_ROOT\" and stop on mismatch. Execute checkpoint commit commands from PROJECT_ROOT so git operations target the active project. Keep user-facing messages focused on prerequisite outcomes and avoid internal command/routing traces unless explicitly requested."
|
|
4
|
+
default_prompt: "Run Cadence prerequisite checks, verify Python availability, and persist pass state before lifecycle or delivery execution. Resolve PROJECT_ROOT first with scripts/resolve-project-root.py --require-cadence, then resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\". Run scripts/check-project-repo-status.py --project-root \"$PROJECT_ROOT\" and treat repo_enabled as the authoritative push mode (false means local-only commits). Before running prerequisite actions, assert route with scripts/assert-workflow-route.py --skill-name prerequisite-gate --project-root \"$PROJECT_ROOT\" and stop on mismatch. Execute checkpoint commit commands from PROJECT_ROOT so git operations target the active project. At end of a successful prerequisite conversation, run scripts/finalize-skill-checkpoint.py from PROJECT_ROOT with --scope prerequisite-gate --checkpoint prerequisites-passed --paths .; allow status=no_changes and treat checkpoint or push failures as blocking errors surfaced verbatim. Keep user-facing messages focused on prerequisite outcomes and avoid internal command/routing traces unless explicitly requested."
|
|
@@ -7,20 +7,22 @@ description: Read and route project lifecycle progress from .cadence/cadence.jso
|
|
|
7
7
|
|
|
8
8
|
1. Resolve project root by running `python3 ../../scripts/resolve-project-root.py --require-cadence` and store stdout in `PROJECT_ROOT`.
|
|
9
9
|
2. Resolve helper scripts dir by running `python3 ../../scripts/resolve-project-scripts-dir.py --project-root "$PROJECT_ROOT"` and store stdout in `CADENCE_SCRIPTS_DIR`.
|
|
10
|
-
3. Run `python3 "$CADENCE_SCRIPTS_DIR/
|
|
11
|
-
4.
|
|
10
|
+
3. Run `python3 "$CADENCE_SCRIPTS_DIR/check-project-repo-status.py" --project-root "$PROJECT_ROOT"` and parse the JSON output. Treat `repo_enabled` as the authoritative push mode (`false` means local-only commits).
|
|
11
|
+
4. Run `python3 "$CADENCE_SCRIPTS_DIR/read-workflow-state.py" --project-root "$PROJECT_ROOT"` and parse the JSON response.
|
|
12
|
+
5. Always report current progress first:
|
|
12
13
|
- current phase title
|
|
13
14
|
- completion summary (completed vs total actionable items, percent)
|
|
14
15
|
- what comes next
|
|
15
|
-
|
|
16
|
+
6. Interpret user intent:
|
|
16
17
|
- If the user only asks status, answer with progress and stop.
|
|
17
18
|
- If the user asks to continue or resume, answer with progress and then route using `route.skill_path` from script output.
|
|
18
|
-
|
|
19
|
+
7. Routing rules:
|
|
19
20
|
- If `next_item.id` is `complete`, explain that all currently tracked workflow items are complete and ask whether they want ideation revisions via `skills/ideation-updater/SKILL.md`.
|
|
20
21
|
- If `route.skill_path` is present, invoke that skill.
|
|
21
22
|
- If route skill is `researcher`, keep execution to one pass per conversation and follow researcher handoff behavior between passes.
|
|
22
23
|
- If no route is present for a non-complete item, ask the user what action they want for that item.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
8. If `read-workflow-state.py` errors, surface the script error verbatim and stop.
|
|
25
|
+
9. At end of this successful skill conversation, run `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/finalize-skill-checkpoint.py" --scope project-progress --checkpoint progress-checked --paths .`.
|
|
26
|
+
10. If `finalize-skill-checkpoint.py` returns `status=no_changes`, continue without failure.
|
|
27
|
+
11. If `finalize-skill-checkpoint.py` reports an error, stop and surface it verbatim.
|
|
28
|
+
12. Do not expose raw workflow IDs, route paths, or execution traces in user-facing replies unless the user explicitly asks for internals.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Project Progress"
|
|
3
3
|
short_description: "Read project state and route to the next Cadence phase"
|
|
4
|
-
default_prompt: "Resolve PROJECT_ROOT first with scripts/resolve-project-root.py --require-cadence, then resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\". Read workflow state using scripts/read-workflow-state.py --project-root \"$PROJECT_ROOT\", report project progress, and if the user asks to continue/resume, automatically route using workflow.next_route from state. If the next route is researcher, continue with one-pass-per-chat behavior and the handoff line: Start a new chat and say \"continue research\" when additional passes remain. Run checkpoint commits from PROJECT_ROOT so git operations target the active project. Keep responses user-facing: summarize phase progress and next step without exposing raw workflow IDs, route paths, or command traces unless explicitly requested."
|
|
4
|
+
default_prompt: "Resolve PROJECT_ROOT first with scripts/resolve-project-root.py --require-cadence, then resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\". Run scripts/check-project-repo-status.py --project-root \"$PROJECT_ROOT\" and treat repo_enabled as the authoritative push mode (false means local-only commits). Read workflow state using scripts/read-workflow-state.py --project-root \"$PROJECT_ROOT\", report project progress, and if the user asks to continue/resume, automatically route using workflow.next_route from state. If the next route is researcher, continue with one-pass-per-chat behavior and the handoff line: Start a new chat and say \"continue research\" when additional passes remain. Run checkpoint commits from PROJECT_ROOT so git operations target the active project. At end of a successful project-progress conversation, run scripts/finalize-skill-checkpoint.py from PROJECT_ROOT with --scope project-progress --checkpoint progress-checked --paths .; allow status=no_changes and treat checkpoint or push failures as blocking errors surfaced verbatim. Keep responses user-facing: summarize phase progress and next step without exposing raw workflow IDs, route paths, or command traces unless explicitly requested."
|
|
@@ -7,15 +7,16 @@ description: Execute ideation research agenda topics through dynamic multi-pass
|
|
|
7
7
|
|
|
8
8
|
1. Resolve project root by running `python3 ../../scripts/resolve-project-root.py --require-cadence` and store stdout in `PROJECT_ROOT`.
|
|
9
9
|
2. Resolve helper scripts dir by running `python3 ../../scripts/resolve-project-scripts-dir.py --project-root "$PROJECT_ROOT"` and store stdout in `CADENCE_SCRIPTS_DIR`.
|
|
10
|
-
3. Run `python3 "$CADENCE_SCRIPTS_DIR/
|
|
11
|
-
4.
|
|
12
|
-
5.
|
|
13
|
-
6.
|
|
14
|
-
7. If start output returns
|
|
10
|
+
3. Run `python3 "$CADENCE_SCRIPTS_DIR/check-project-repo-status.py" --project-root "$PROJECT_ROOT"` and parse the JSON output. Treat `repo_enabled` as the authoritative push mode (`false` means local-only commits).
|
|
11
|
+
4. Run `python3 "$CADENCE_SCRIPTS_DIR/assert-workflow-route.py" --skill-name researcher --project-root "$PROJECT_ROOT"` and parse the JSON response.
|
|
12
|
+
5. If route assertion fails, stop and surface the exact error to the user.
|
|
13
|
+
6. Start exactly one research pass for this conversation by running `python3 "$CADENCE_SCRIPTS_DIR/run-research-pass.py" --project-root "$PROJECT_ROOT" start --ack-handoff` and parse the JSON output.
|
|
14
|
+
7. If start output returns `research_complete=true`, report that all research topics are complete and skip pass execution.
|
|
15
|
+
8. If start output returns a `pass`, research only the topics listed in that pass:
|
|
15
16
|
- Use web browsing for current, source-backed information.
|
|
16
17
|
- Keep scope limited to the pass topics; do not expand into other pending topics.
|
|
17
18
|
- Capture concise findings and source links per topic.
|
|
18
|
-
|
|
19
|
+
9. Build a pass result JSON payload in-memory with this shape:
|
|
19
20
|
- `pass_summary` (string)
|
|
20
21
|
- `topics` (array)
|
|
21
22
|
- Each `topics[]` item must include:
|
|
@@ -25,11 +26,12 @@ description: Execute ideation research agenda topics through dynamic multi-pass
|
|
|
25
26
|
- `confidence` (`low|medium|high`)
|
|
26
27
|
- `unresolved_questions` (array of strings)
|
|
27
28
|
- `sources` (array of objects with at least `url`; optional: `title`, `publisher`, `published_at`, `notes`)
|
|
28
|
-
|
|
29
|
+
10. Complete the pass without writing any extra state files by piping payload JSON to:
|
|
29
30
|
- `python3 "$CADENCE_SCRIPTS_DIR/run-research-pass.py" --project-root "$PROJECT_ROOT" complete --pass-id "<pass_id_from_start_output>" --stdin`
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
11. Never start a second pass in the same conversation.
|
|
32
|
+
12. If complete output returns `handoff_required=true`, end with this exact handoff line and stop: `Start a new chat and say "continue research".`
|
|
33
|
+
13. If complete output returns `research_complete=true`, report that research phase is complete.
|
|
34
|
+
14. At end of this successful skill conversation, run `cd "$PROJECT_ROOT" && python3 "$CADENCE_SCRIPTS_DIR/finalize-skill-checkpoint.py" --scope researcher --checkpoint research-pass-recorded --paths .`.
|
|
35
|
+
15. If `finalize-skill-checkpoint.py` returns `status=no_changes`, continue without failure.
|
|
36
|
+
16. If `finalize-skill-checkpoint.py` reports an error, stop and surface it verbatim.
|
|
37
|
+
17. Surface script failures verbatim and do not expose internal command traces unless explicitly requested.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Researcher"
|
|
3
3
|
short_description: "Dynamic multi-pass ideation research with strict per-pass handoff"
|
|
4
|
-
default_prompt: "Resolve PROJECT_ROOT with scripts/resolve-project-root.py --require-cadence, resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\", and assert route using scripts/assert-workflow-route.py --skill-name researcher --project-root \"$PROJECT_ROOT\". Run exactly one pass per conversation using scripts/run-research-pass.py start, research only that pass's topics with web-backed sources, then persist pass findings via scripts/run-research-pass.py complete. Never execute a second pass in the same chat. If complete output indicates more work remains, end with: Start a new chat and say \"continue research\"."
|
|
4
|
+
default_prompt: "Resolve PROJECT_ROOT with scripts/resolve-project-root.py --require-cadence, resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\", run scripts/check-project-repo-status.py --project-root \"$PROJECT_ROOT\" and treat repo_enabled as the authoritative push mode (false means local-only commits), and assert route using scripts/assert-workflow-route.py --skill-name researcher --project-root \"$PROJECT_ROOT\". Run exactly one pass per conversation using scripts/run-research-pass.py start, research only that pass's topics with web-backed sources, then persist pass findings via scripts/run-research-pass.py complete. Never execute a second pass in the same chat. At end of a successful researcher conversation, run scripts/finalize-skill-checkpoint.py from PROJECT_ROOT with --scope researcher --checkpoint research-pass-recorded --paths .; allow status=no_changes and treat checkpoint or push failures as blocking errors surfaced verbatim. If complete output indicates more work remains, end with: Start a new chat and say \"continue research\"."
|
|
@@ -11,7 +11,7 @@ description: Initialize Cadence project scaffolding for first-time setup. Use wh
|
|
|
11
11
|
4. Run `python3 ../../scripts/run-scaffold-gate.py --project-root "$PROJECT_ROOT"` (resolve this relative path from this sub-skill directory) and parse the JSON response.
|
|
12
12
|
5. If the script errors, stop and surface the exact error to the user.
|
|
13
13
|
6. Resolve helper scripts dir by running `python3 ../../scripts/resolve-project-scripts-dir.py --project-root "$PROJECT_ROOT"` and store stdout in `CADENCE_SCRIPTS_DIR`.
|
|
14
|
-
7. Run `python3 "$CADENCE_SCRIPTS_DIR/check-project-repo-status.py" --project-root "$PROJECT_ROOT"` and parse the JSON output.
|
|
14
|
+
7. Run `python3 "$CADENCE_SCRIPTS_DIR/check-project-repo-status.py" --project-root "$PROJECT_ROOT"` and parse the JSON output. Treat `repo_enabled` as the authoritative push mode (`false` means local-only commits).
|
|
15
15
|
8. If `repo_enabled` is false, ask the user: `No GitHub remote is configured yet. Do you want to initialize a GitHub repo now? (yes/no)`.
|
|
16
16
|
9. If the user answers yes:
|
|
17
17
|
- If `git_initialized` is false, run `cd "$PROJECT_ROOT" && git init`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Scaffold"
|
|
3
3
|
short_description: "Initialize Cadence project scaffolding for first-time setup"
|
|
4
|
-
default_prompt: "Initialize Cadence project scaffolding in the target project root, creating .cadence state files only when they do not already exist. Resolve PROJECT_ROOT first with scripts/resolve-project-root.py, then resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\". Before running scaffold actions, assert route with scripts/assert-workflow-route.py --skill-name scaffold --project-root \"$PROJECT_ROOT\" and stop on mismatch. Execute git/state-changing scaffold commands from PROJECT_ROOT so commits and .cadence updates target the correct repository. In user-facing replies, summarize outcome only and avoid internal command or routing traces unless explicitly requested."
|
|
4
|
+
default_prompt: "Initialize Cadence project scaffolding in the target project root, creating .cadence state files only when they do not already exist. Resolve PROJECT_ROOT first with scripts/resolve-project-root.py, then resolve CADENCE_SCRIPTS_DIR with scripts/resolve-project-scripts-dir.py --project-root \"$PROJECT_ROOT\". Before running scaffold actions, assert route with scripts/assert-workflow-route.py --skill-name scaffold --project-root \"$PROJECT_ROOT\" and stop on mismatch. Run scripts/check-project-repo-status.py --project-root \"$PROJECT_ROOT\" and treat repo_enabled as the authoritative push mode (false means local-only commits). Execute git/state-changing scaffold commands from PROJECT_ROOT so commits and .cadence updates target the correct repository. At end of a successful scaffold conversation, run scripts/finalize-skill-checkpoint.py from PROJECT_ROOT with --paths . and scope/checkpoint aligned to the selected .cadence policy (scaffold/cadence-tracked for track mode, scaffold/cadence-ignored for ignore mode); allow status=no_changes and treat checkpoint or push failures as blocking errors surfaced verbatim. In user-facing replies, summarize outcome only and avoid internal command or routing traces unless explicitly requested."
|