Pre-unlock wave U1. Non-breaking DRY refactor per CONVERGENCE-PLAN tasks 1/2/4/5/6. Created (5 files): - _blocks/pipeline-5phase-template.md (54 LOC) — shared preamble for ci-scaffold / auth-setup / observability-setup / docs-scaffold / schema-design - _blocks/rule-pure-click-contract.md (42 LOC) — AskUserQuestion contract referenced across 5+ skills - skills/animate/SKILL.md (67 LOC) — gateway router; AskUserQuestion picks scroll / motion / web-effects / ai-animation, hands off to picked skill - skills/competitor-analysis/SKILL.md (35 LOC) — redirect stub to /research --angle=competitors (did not exist; stub documents the preset path per RULE -1 Constructive) - skills/design-inspiration/SKILL.md (38 LOC) — same pattern, --angle=design-refs Deprecation headers added (3 skills): - skills/site-builder/SKILL.md → "use /site-create" (subset) - skills/competitor-analysis/SKILL.md → preset stub - skills/design-inspiration/SKILL.md → preset stub Reference blocks added (5 pipeline skills): - skills/ci-scaffold, auth-setup, observability-setup, docs-scaffold, schema-design — each +4 LOC pointer to pipeline-5phase-template.md - skills/research — +18 LOC --angle presets table LOC saved via shared blocks: ~96 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
54 lines
2.5 KiB
Markdown
54 lines
2.5 KiB
Markdown
# Pipeline 5-Phase Wizard Template (shared preamble)
|
||
|
||
> Shared contract for hub-and-spoke pipeline skills. Referenced by:
|
||
> `/ci-scaffold`, `/auth-setup`, `/observability-setup`, `/docs-scaffold`,
|
||
> `/schema-design`. Skill-specific phase tables stay inline in each skill.
|
||
|
||
## Hub-and-spoke pipeline contract
|
||
|
||
A pipeline skill is the **INDEX** ("hub"). Each phase lives in a separate
|
||
file in the skill directory ("spoke") and runs in a fixed order. Never skip
|
||
a phase. Never re-order. Each phase has exactly one `AskUserQuestion` call
|
||
(Phase 1 may batch multiple questions into one call via the `questions`
|
||
array).
|
||
|
||
## Minimum AskUserQuestion count
|
||
|
||
≥ 5 across a full session (one per phase). Phase 1 intake typically bundles
|
||
3–5 related questions into a single `AskUserQuestion` call per native
|
||
protocol — that still counts as one "call" for the minimum-5 contract.
|
||
|
||
## Phase conventions
|
||
|
||
| Phase | Purpose |
|
||
|---|---|
|
||
| 1 — Intake | Typed input (one-line description). Bundle 3-5 click-questions in one `AskUserQuestion`. |
|
||
| 2 — Decomposition | First structural decision (matrix / entities / identity / instrumentation). One click. |
|
||
| 3 — Generation | Emit primary artefact (workflow YAML / DDL / session-config / scaffold files / scrape-ship wiring). One click to approve/revise. |
|
||
| 4 — Integration | Secondary artefact wired to runtime (migrations / secrets / auth-z / dashboards). One click. |
|
||
| 5 — Verify / Hardening | Run linter / alert rules / threat checklist / seed / changelog init. One click per finding. |
|
||
|
||
## Final report format
|
||
|
||
Every pipeline skill emits a final report block after Phase 5:
|
||
|
||
```
|
||
=== <SKILL-NAME> REPORT ===
|
||
<Key: Value pairs, one per produced variable>
|
||
Next: <one-line handoff instruction>
|
||
```
|
||
|
||
## Universal rules (apply to all pipeline skills)
|
||
|
||
- **Pure-click contract** — only Phase 1 intake is typed. See
|
||
`_blocks/rule-pure-click-contract.md`.
|
||
- **RULE 0.8 Secrets SSoT** — emit env-var NAMES only, never values.
|
||
Storage path via `_blocks/domain-has-secrets.md`.
|
||
- **RULE 0.4 NO HALLUCINATION** — every cited primitive / block /
|
||
dashboard ID must exist or be verified in-session.
|
||
- **NO DOWNGRADE (RULE -1)** — if a combination is unsafe, return 2-3
|
||
constructive alternatives. Never "not supported".
|
||
- **Surgical scope** — write only the files the skill's `Rules` section
|
||
lists. Never touch application source beyond the minimum init call.
|
||
- **Constructor Pattern** — `SKILL.md` < 200 LOC. Each phase file < 100 LOC.
|
||
- **Fail-closed default** — unknown inputs → no emission until user clicks.
|