@event4u/agent-config 2.10.0 → 2.12.0

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.
Files changed (94) hide show
  1. package/.agent-src/commands/agents.md +1 -0
  2. package/.agent-src/commands/challenge-me.md +1 -0
  3. package/.agent-src/commands/chat-history.md +1 -0
  4. package/.agent-src/commands/context.md +1 -0
  5. package/.agent-src/commands/council.md +1 -0
  6. package/.agent-src/commands/feature.md +1 -0
  7. package/.agent-src/commands/fix.md +1 -0
  8. package/.agent-src/commands/grill-me.md +1 -0
  9. package/.agent-src/commands/judge.md +1 -0
  10. package/.agent-src/commands/memory.md +1 -0
  11. package/.agent-src/commands/module.md +1 -0
  12. package/.agent-src/commands/onboard.md +32 -4
  13. package/.agent-src/commands/optimize.md +1 -0
  14. package/.agent-src/commands/override.md +1 -0
  15. package/.agent-src/commands/roadmap.md +1 -0
  16. package/.agent-src/commands/tests.md +1 -0
  17. package/.agent-src/skills/canvas-design/SKILL.md +132 -0
  18. package/.agent-src/skills/canvas-design/evals/triggers.json +16 -0
  19. package/.agent-src/skills/doc-coauthoring/SKILL.md +129 -0
  20. package/.agent-src/skills/doc-coauthoring/evals/triggers.json +16 -0
  21. package/.agent-src/skills/nextjs-patterns/SKILL.md +203 -0
  22. package/.agent-src/skills/skill-writing/SKILL.md +101 -16
  23. package/.agent-src/skills/sql-writing/SKILL.md +1 -1
  24. package/.agent-src/skills/symfony-workflow/SKILL.md +173 -0
  25. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +4 -0
  26. package/.agent-src/templates/scripts/work_engine/hooks/builtin/__init__.py +3 -0
  27. package/.agent-src/templates/scripts/work_engine/hooks/builtin/decision_gate.py +162 -0
  28. package/.agent-src/templates/scripts/work_engine/hooks/settings.py +24 -6
  29. package/.agent-src/templates/scripts/work_engine/scoring/decision_engine.py +351 -0
  30. package/.claude-plugin/marketplace.json +5 -1
  31. package/CHANGELOG.md +68 -0
  32. package/README.md +37 -8
  33. package/config/agent-settings.template.yml +66 -0
  34. package/docs/architecture.md +1 -1
  35. package/docs/contracts/STABILITY.md +16 -0
  36. package/docs/contracts/adr-chat-history-split.md +1 -0
  37. package/docs/contracts/adr-forecast-construction-shape.md +1 -0
  38. package/docs/contracts/adr-gtm-context-spine.md +1 -0
  39. package/docs/contracts/adr-level-6-productization.md +147 -0
  40. package/docs/contracts/adr-settings-sync-engine.md +1 -0
  41. package/docs/contracts/adr-wing4-context-spine.md +1 -0
  42. package/docs/contracts/agent-memory-contract.md +1 -0
  43. package/docs/contracts/agents-md-tech-stack.md +1 -0
  44. package/docs/contracts/audit-log-v1.md +1 -0
  45. package/docs/contracts/command-clusters.md +1 -0
  46. package/docs/contracts/command-surface-tiers.md +1 -0
  47. package/docs/contracts/context-paths.md +1 -0
  48. package/docs/contracts/cost-profile-defaults.md +105 -0
  49. package/docs/contracts/cross-wing-handoff.md +1 -0
  50. package/docs/contracts/decision-engine-gates.md +115 -0
  51. package/docs/contracts/decision-trace-v1.md +1 -0
  52. package/docs/contracts/file-ownership-matrix.md +1 -0
  53. package/docs/contracts/hook-architecture-v1.md +1 -0
  54. package/docs/contracts/implement-ticket-flow.md +1 -0
  55. package/docs/contracts/installed-tools-lockfile.md +1 -0
  56. package/docs/contracts/kernel-membership.md +1 -0
  57. package/docs/contracts/linear-ai-rules-inclusion.md +1 -0
  58. package/docs/contracts/linear-ai-three-layers.md +1 -0
  59. package/docs/contracts/linter-structural-model.md +1 -0
  60. package/docs/contracts/load-context-budget-model.md +1 -0
  61. package/docs/contracts/load-context-schema.md +1 -0
  62. package/docs/contracts/memory-visibility-v1.md +1 -0
  63. package/docs/contracts/one-off-script-lifecycle.md +1 -0
  64. package/docs/contracts/orchestration-dsl-v1.md +1 -0
  65. package/docs/contracts/package-self-orientation.md +1 -0
  66. package/docs/contracts/persona-schema.md +1 -0
  67. package/docs/contracts/release-trunk-sync.md +104 -0
  68. package/docs/contracts/roadmap-complexity-standard.md +1 -0
  69. package/docs/contracts/rule-classification.md +1 -0
  70. package/docs/contracts/rule-interactions.md +26 -0
  71. package/docs/contracts/rule-priority-hierarchy.md +1 -0
  72. package/docs/contracts/rule-router.md +1 -0
  73. package/docs/contracts/settings-sync-yaml-subset.md +1 -0
  74. package/docs/contracts/skill-domains.md +1 -0
  75. package/docs/contracts/tier-3-contrib-plugin.md +1 -0
  76. package/docs/contracts/ui-stack-extension.md +1 -0
  77. package/docs/contracts/ui-track-flow.md +1 -0
  78. package/docs/customization.md +1 -1
  79. package/docs/getting-started.md +3 -1
  80. package/docs/installation.md +8 -6
  81. package/package.json +1 -1
  82. package/scripts/ai_council/clients.py +17 -4
  83. package/scripts/ai_council/orchestrator.py +6 -2
  84. package/scripts/check_beta_review_markers.py +127 -0
  85. package/scripts/check_references.py +25 -0
  86. package/scripts/check_release_trunk_sync.py +152 -0
  87. package/scripts/council_cli.py +36 -5
  88. package/scripts/install.py +3 -3
  89. package/scripts/run_skill_evals.py +185 -0
  90. package/scripts/schemas/command.schema.json +5 -0
  91. package/scripts/schemas/skill.schema.json +4 -0
  92. package/scripts/skill_linter.py +82 -3
  93. package/scripts/smoke_quickstart.py +134 -0
  94. package/scripts/validate_decision_engine.py +124 -0
@@ -3,6 +3,7 @@ name: agents
3
3
  tier: 1
4
4
  description: Agent-layer orchestrator — routes to init, optimize, audit. Covers AGENTS.md and its multi-tool stubs (CLAUDE.md, GEMINI.md, copilot-instructions.md, .cursorrules).
5
5
  cluster: agents
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: challenge-me
3
3
  tier: 2
4
4
  description: Challenge-me orchestrator — routes to vision, with-docs
5
5
  cluster: challenge-me
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: chat-history
3
3
  tier: 2
4
4
  description: Chat-history orchestrator — routes to show, import, learn
5
5
  cluster: chat-history
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: context
3
3
  tier: 2
4
4
  description: Context orchestrator — routes to create, refactor
5
5
  cluster: context
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: council
3
3
  tier: 1
4
4
  description: Council orchestrator — routes to default, pr, design, optimize
5
5
  cluster: council
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: feature
3
3
  tier: 1
4
4
  description: Feature orchestrator — routes to explore, plan, refactor, roadmap, dev
5
5
  cluster: feature
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: fix
3
3
  tier: 1
4
4
  description: Fix orchestrator — routes to ci, references, portability, seeder, pr-comments, pr-bot-comments, pr-developer-comments
5
5
  cluster: fix
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: grill-me
3
3
  tier: 2
4
4
  description: Alias for /challenge-me — interactive grill-style interview that sharpens a fuzzy plan/idea into a copyable Markdown pitch
5
5
  cluster: challenge-me
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: judge
3
3
  tier: 1
4
4
  description: Judge orchestrator — routes to solo, steps, on-diff
5
5
  cluster: judge
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: memory
3
3
  tier: 1
4
4
  description: Memory orchestrator — routes to add, load, mine-session, promote, propose
5
5
  cluster: memory
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: module
3
3
  tier: 2
4
4
  description: Module orchestrator — routes to create, explore
5
5
  cluster: module
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -153,11 +153,12 @@ rtk post-install steps (telemetry off, init --global) per
153
153
  ### 7. Confirm `cost_profile` and learning loop
154
154
 
155
155
  Read current `cost_profile` and `pipelines.skill_improvement` values.
156
- Present plainly (sensible defaults from template — `minimal` +
157
- `skill_improvement: true`):
156
+ Present plainly (sensible defaults from template — `balanced` +
157
+ `skill_improvement: true`; rationale in
158
+ [`docs/contracts/cost-profile-defaults.md`](../docs/contracts/cost-profile-defaults.md)):
158
159
 
159
160
  ```
160
- > Cost profile: {current} (minimal by default — includes the learning loop)
161
+ > Cost profile: {current} (balanced by default — kernel + tier-1 auto-rules)
161
162
  > Learning loop (skill_improvement): {current} (true by default)
162
163
  >
163
164
  > 1. Keep defaults — recommended
@@ -236,7 +237,34 @@ directly — the agent follows the merge rules in `layered-settings` when
236
237
  you ask it to change a value.
237
238
  ```
238
239
 
239
- ### 11. Maintainer-only feature pointer
240
+ ### 11. Quickstart pointer — next command after onboarding
241
+
242
+ Print next-action block so developer does **not** have to re-find README
243
+ to start work. One screen, no question, no prompt:
244
+
245
+ ```
246
+ 🚀 Next step — your first real task
247
+
248
+ Try one of these from the same chat:
249
+
250
+ /work "your first real task"
251
+ Free-form prompt — agent refines, plans, implements, tests,
252
+ verifies, reports. A decision_result entry lands in agents/state/
253
+ confirming the work-engine ran end-to-end.
254
+
255
+ /implement-ticket PROJ-123
256
+ Ticket-driven flow — pulls Jira/Linear context, runs same
257
+ refine → memory → analyze → plan → implement → test → verify
258
+ → report sequence, halts on ambiguity.
259
+
260
+ Both honour decision_engine gates in .agent-settings.yml
261
+ (see docs/contracts/decision-engine-gates.md for schema).
262
+ ```
263
+
264
+ Skip block in cloud surfaces (cloud agent's invocation surface is
265
+ already chat window).
266
+
267
+ ### 12. Maintainer-only feature pointer
240
268
 
241
269
  Print one-screen hint after summary — no question, no prompt, just pointer
242
270
  for maintainers who want to opt into artefact-engagement telemetry layer.
@@ -3,6 +3,7 @@ name: optimize
3
3
  tier: 1
4
4
  description: Optimize orchestrator — routes to skills, agents-dir, augmentignore, rtk-filters
5
5
  cluster: optimize
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: override
3
3
  tier: 2
4
4
  description: Override orchestrator — routes to create, manage
5
5
  cluster: override
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: roadmap
3
3
  tier: 1
4
4
  description: Roadmap orchestrator — routes to create (authoring) and process-step / process-phase / process-full (autonomous execution).
5
5
  cluster: roadmap
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -3,6 +3,7 @@ name: tests
3
3
  tier: 2
4
4
  description: Tests orchestrator — routes to create, execute
5
5
  cluster: tests
6
+ type: orchestrator
6
7
  disable-model-invocation: true
7
8
  suggestion:
8
9
  eligible: true
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: canvas-design
3
+ description: "Use when creating static visual art — posters, marketing visuals, brand assets, PDF/PNG design pieces — even if the user just says 'design a poster' or 'mach uns ein Visual'."
4
+ source: package
5
+ domain: product
6
+ ---
7
+
8
+ # canvas-design
9
+
10
+ ## When to use
11
+
12
+ Use when:
13
+
14
+ * User asks for a poster, marketing visual, brand asset, social-media graphic, cover art
15
+ * Output is a static `.pdf` or `.png` design piece (not a UI mockup, not a wireframe)
16
+ * The deliverable is the visual artifact itself
17
+
18
+ Do NOT use when:
19
+
20
+ * Designing a UI component or app screen → `fe-design`, `ui-component-architect`, `react-shadcn-ui`, `blade-ui`, `flux`
21
+ * Tailwind / shadcn / Flux component styling → `tailwind-engineer`
22
+ * Brand voice / tone definition → `voice-and-tone-design`
23
+ * Release announcement copy → `release-comms`
24
+
25
+ ## Goal
26
+
27
+ Produce one finished visual artifact (`.pdf` or `.png`) backed by an original design philosophy. Both files ship together.
28
+
29
+ The work emphasizes: visual expression over text · original direction (no artist mimicry) · composition that looks deliberated, not generated.
30
+
31
+ ## Preconditions
32
+
33
+ * Brief from user (theme, intent, occasion, target medium, size constraint)
34
+ * Output directory: `agents/design-assets/{slug}/` — create if missing
35
+ * Image-generation tooling available (Python with Pillow / matplotlib / cairo, SVG → PNG conversion, or whatever the environment ships)
36
+
37
+ ## Procedure
38
+
39
+ ### 1. Brief intake
40
+
41
+ One numbered-options block surfaces: theme / occasion · target medium + dimensions (web 1200×630? print A3? square 1080×1080?) · color & mood direction · hard constraints (logo required? color to avoid?) · single page or series.
42
+
43
+ If the brief says "in the style of [living artist]", flag the copyright risk and propose an original direction.
44
+
45
+ ### 2. Design philosophy
46
+
47
+ Author `agents/design-assets/{slug}/philosophy.md` — 4–6 paragraphs naming:
48
+
49
+ * **Movement name** — 1–2 words ("Chromatic Silence", "Brutalist Joy", "Analog Meditation")
50
+ * **Visual language** — how the philosophy manifests through space, form, color, scale, composition, rhythm
51
+ * **Text role** — sparse, accent only; never paragraphs
52
+ * **Craftsmanship anchor** — visible deliberation, not template polish
53
+
54
+ Stay aesthetically specific but leave interpretive room for the canvas execution.
55
+
56
+ ### 3. Subtle conceptual thread
57
+
58
+ Identify a single niche reference embedded in the work — not announced, woven into form / color / composition. A jazz musician quoting another song: those who know catch it, others enjoy the music.
59
+
60
+ Document it in `philosophy.md` under `## Subtle reference`.
61
+
62
+ ### 4. Canvas execution
63
+
64
+ Produce `agents/design-assets/{slug}/{slug}.{pdf|png}`:
65
+
66
+ 1. Pick the execution tool (Pillow, matplotlib, SVG, or framework-native)
67
+ 2. Limited palette — 2–5 colors, intentional and cohesive
68
+ 3. Geometric or organic forms per philosophy
69
+ 4. Text — sparse, design-forward, integrated as visual element; never overlapping, never falling off canvas
70
+ 5. Margins — every element contained, breathing room
71
+ 6. Repeating patterns, layered elements, systematic markers as the philosophy permits
72
+
73
+ ### 5. Refinement pass
74
+
75
+ After the first render, **do not add more graphics**. Refine what exists:
76
+
77
+ * Tighten composition cohesion
78
+ * Adjust spacing, alignment, color balance
79
+ * Replace fonts if they fight the philosophy
80
+ * Remove any element that doesn't earn its place
81
+
82
+ Render the refined version. Overwrite the artifact.
83
+
84
+ ### 6. Multi-page (optional)
85
+
86
+ If the user requests a series, treat each page as a story beat — distinct but philosophically continuous. Bundle as a multi-page PDF or numbered PNGs (`{slug}-01.png`, `{slug}-02.png`, …).
87
+
88
+ ### 7. Validation
89
+
90
+ * `philosophy.md` exists with movement name + 4–6 paragraphs + subtle-reference section
91
+ * Artifact file exists at the expected path
92
+ * Open and verify: nothing falls off canvas, no overlapping text, palette ≤ 5 distinct colors, every element has margin
93
+ * Original work — no traceable artist-style copy
94
+
95
+ ## Output format
96
+
97
+ 1. `agents/design-assets/{slug}/philosophy.md`
98
+ 2. `agents/design-assets/{slug}/{slug}.{pdf|png}` (or numbered series for multi-page)
99
+ 3. One concluding line stating both file paths
100
+
101
+ ## Gotcha
102
+
103
+ * **No artist mimicry** — copying a living artist's signature style is copyright risk and breaks the original-work mandate. Propose an original direction.
104
+ * **Text discipline** — most pieces fail because text creeps in as paragraphs. Words are visual accents, not explanation.
105
+ * **One canvas** — single page unless multi-page is explicitly requested.
106
+ * **Font availability** — the environment may not ship your target font. Pick a fallback before render time, or download into the working dir first.
107
+ * **Output location** — always `agents/design-assets/{slug}/`. Never write binary artifacts to the repo root or to source-of-truth dirs.
108
+ * **Refinement loop is real** — first render is the draft, not the deliverable.
109
+
110
+ ## Frugality Standards
111
+
112
+ Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md).
113
+
114
+ * Per the default-terse rule, `philosophy.md` opens with the movement name — no "In this document I will describe …" frame.
115
+ * Per the cheap-question check, numbered-options blocks only at brief intake (where consequences differ).
116
+ * Per the post-action summary suppression, ship the files; skip an "## Artist statement" wrapper.
117
+
118
+ **Pre-save self-check:**
119
+
120
+ 1. Does `philosophy.md` carry filler superlatives ("absolute pinnacle", "transcendent")?
121
+ 2. Does the canvas include explanatory text instead of visual-accent text?
122
+ 3. Are more than 5 distinct colors present without justification in the philosophy?
123
+ 4. Is the subtle reference announced explicitly in the visual, breaking the "those who know" principle?
124
+
125
+ ## Do NOT
126
+
127
+ * Copy a living artist's signature visual style
128
+ * Generate cartoony / amateur / template-store output
129
+ * Add paragraphs of text — visuals communicate, words accent
130
+ * Skip the philosophy file — the artifact without it is just an image
131
+ * Skip the refinement pass
132
+ * Write binary artifacts to the repo root or to source-of-truth dirs
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "canvas-design",
3
+ "description": "5 should-trigger + 5 should-not-trigger queries. Should-trigger asks for static visual art (poster / cover / marketing visual). Should-not-trigger near-misses share design vocabulary but route elsewhere (fe-design, tailwind-engineer, voice-and-tone-design, release-comms).",
4
+ "queries": [
5
+ {"q": "Need a launch poster for next week's release announcement — A3 print, minimal style", "trigger": true},
6
+ {"q": "Design us a social-media visual for the v3.0 release, 1080x1080 for IG", "trigger": true},
7
+ {"q": "Mach mir bitte ein Cover-Bild für den Talk nächste Woche, 1200x630 fürs Web", "trigger": true},
8
+ {"q": "We want a single-page PDF brand visual for the conference booth handout", "trigger": true},
9
+ {"q": "Build a minimalist poster for the team-offsite invitation, square format", "trigger": true},
10
+ {"q": "Design a new component library for our app — buttons, inputs, cards", "trigger": false},
11
+ {"q": "What color palette should we standardize on in tailwind.config.js?", "trigger": false},
12
+ {"q": "Refactor the brand voice doc — make it less corporate and more direct", "trigger": false},
13
+ {"q": "Draft the release announcement blog post for the v3.0 launch", "trigger": false},
14
+ {"q": "Help me wireframe the new onboarding flow — three screens, mobile-first", "trigger": false}
15
+ ]
16
+ }
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: doc-coauthoring
3
+ description: "Use when co-authoring a PRD, design doc, RFC, decision doc, or technical spec — 3-stage flow (context → section-by-section → reader-test) — even if the user just says 'help me write this spec'."
4
+ source: package
5
+ domain: process
6
+ ---
7
+
8
+ # doc-coauthoring
9
+
10
+ ## When to use
11
+
12
+ Use this skill when:
13
+
14
+ * User starts a substantial writing task — PRD, RFC, design doc, decision doc, technical spec, proposal
15
+ * User says "help me write this up", "draft a proposal", "we need a doc for X"
16
+ * The output is a structured prose document the user will own and ship
17
+
18
+ Do NOT use when:
19
+
20
+ * Authoring agent docs / module docs / AGENTS.md → `agent-docs-writing`
21
+ * Writing a README → `readme-writing` / `readme-writing-package`
22
+ * Writing an ADR (process is fixed, no co-authoring loop) → `adr-create`
23
+ * Code documentation, inline comments, docstrings
24
+
25
+ ## Goal
26
+
27
+ Move from a fuzzy ask to a complete document the user owns, by:
28
+
29
+ 1. Closing the context gap before drafting
30
+ 2. Building each section through brainstorm → curate → draft → refine
31
+ 3. Testing the draft with a fresh-context reader before declaring done
32
+
33
+ ## Preconditions
34
+
35
+ * User explicitly wants a document (not a quick answer)
36
+ * `save-file` and `str-replace-editor` available
37
+ * Target path and filename agreed up front
38
+
39
+ ## Procedure
40
+
41
+ ### 0. Inspect existing material
42
+
43
+ Before any drafting, **inspect** the landscape: search `agents/` and
44
+ the repo for related prior docs (`grep -ril "{topic}" agents/ docs/`),
45
+ check the user's named ticket / thread for context, and confirm no
46
+ in-flight document already covers the ask. If a near-duplicate exists,
47
+ surface it and ask whether to extend or supersede.
48
+
49
+ ### 1. Context gathering
50
+
51
+ Close the gap between what the user knows and what you know.
52
+
53
+ 1. **Meta-questions** — one numbered-options block (per `user-interaction`): doc type? primary audience? desired impact? template/format constraint? existing related docs / threads / tickets?
54
+ 2. **Info dump** — invite stream-of-consciousness context: plain text, paths to existing docs, ticket links, thread paste.
55
+ 3. **Clarifying questions** — 5–10 numbered questions to fill remaining gaps. User answers shorthand (`1: yes`, `2: see #channel`, `3: backwards-compat reason`).
56
+ 4. **Exit gate** — ask "ready to draft, or more context?" — wait for confirmation. Do not start scaffolding the file until the user confirms.
57
+
58
+ ### 2. Refinement & structure
59
+
60
+ Build the document section by section.
61
+
62
+ 1. **Agree on structure** — propose 3–5 sections based on doc type and context. Ask user to confirm or adjust.
63
+ 2. **Scaffold the file** — use `save-file` to create the doc with placeholder text per section (`[To be written]`). One commit-equivalent action; review with the user before populating.
64
+ 3. **Pick the starting section** — suggest the one with the most unknowns (usually the core decision / proposal). Never start with the summary.
65
+ 4. **Per-section loop** — repeat for each section:
66
+ - **Clarifying questions** — 5–10 numbered questions about what this section covers
67
+ - **Brainstorm** — 5–20 numbered options of what could go in. Offer "more options?" at the end.
68
+ - **Curation** — user picks: `keep 1,4,7,9` / `remove 3 (dupes 1)` / `combine 11+12`. Parse freeform feedback if the user gives `"looks good but ..."`.
69
+ - **Gap check** — "anything missing for this section?"
70
+ - **Draft** — `str-replace-editor` to replace the placeholder. Never reprint the whole doc.
71
+ - **Iterate** — user feedback in, surgical edits out. After 3 iterations with no substantial change, ask "anything to remove without losing value?"
72
+ - **Section exit gate** — "section done — move to next?"
73
+ 5. **Whole-doc review at 80% complete** — re-read the full file. Surface contradictions, redundancy, generic filler. Apply final edits.
74
+
75
+ ### 3. Reader test
76
+
77
+ Verify the doc works for someone without your context.
78
+
79
+ 1. **Predict reader questions** — generate 5–10 questions a real reader would ask after reading.
80
+ 2. **Run the test** — pick one:
81
+ - **`ai-council` available** → invoke with the doc + predicted questions; treat each council member as a fresh reader.
82
+ - **Otherwise** → instruct the user to open a fresh Claude / ChatGPT, paste the doc, ask the questions one by one. Capture answers.
83
+ 3. **Additional fresh-reader checks** (always): "what is ambiguous?" · "what context does this doc assume readers have?" · "internal contradictions?"
84
+ 4. **Report** — surface where the fresh reader got it wrong, where assumptions break.
85
+ 5. **Loop back to Stage 2** for problematic sections until the fresh reader answers cleanly and surfaces no new gaps.
86
+
87
+ ### 4. Handover
88
+
89
+ 1. Final read-through by the user (they own the doc).
90
+ 2. Verify facts, links, technical details.
91
+ 3. Confirm intended impact achieved.
92
+ 4. Surface the final file path. Done.
93
+
94
+ ## Output format
95
+
96
+ 1. Target document file at the agreed path (e.g. `agents/proposals/{slug}.md`)
97
+ 2. One concluding line stating "Doc complete at {path} — ready for owner review"
98
+
99
+ ## Gotcha
100
+
101
+ * **One question per turn** (Iron Law from `ask-when-uncertain`) — never bundle clarifying + brainstorm + curate prompts in one message.
102
+ * **Never reprint the full doc** during iteration — always use `str-replace-editor`. Reprinting wastes tokens and creates merge drift.
103
+ * **Reader test is not optional** — without it, you ship the version that makes sense to you, not to readers. Skip only on explicit user override.
104
+ * **Sub-agent absence** — `ai-council` may not be configured. Have the manual fresh-Claude fallback ready (Stage 3 step 2).
105
+ * **Image alt-text** — if the doc embeds images, add alt-text inline; without it, fresh-reader tools can't see them.
106
+ * **Language discipline** — keep the doc body in English (per `language-and-tone`). For verbatim German user phrases or interview quotes, use `DE: … · EN: …` anchor blocks.
107
+
108
+ ## Frugality Standards
109
+
110
+ Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md).
111
+
112
+ * Per the default-terse rule, each section opens with content, not "In this section …".
113
+ * Per the cheap-question check, numbered-options blocks only when consequences differ — skip "yes / no, continue?" type prompts.
114
+ * Per the post-action summary suppression, the final output is the doc — no wrapping "Summary of what we did" block.
115
+
116
+ **Pre-save self-check:**
117
+
118
+ 1. Does any section open with a narrative preamble instead of content?
119
+ 2. Are clarifying questions bundled when one-at-a-time would surface user priorities better?
120
+ 3. Is the reader-test stage skipped or merged into a "we're done" claim?
121
+ 4. Is non-English prose present outside `DE: / EN:` anchor blocks?
122
+
123
+ ## Do NOT
124
+
125
+ * Skip Stage 1 — straight-to-drafting produces docs that miss audience and impact
126
+ * Bundle 5+ questions into one numbered block — breaks one-question-per-turn
127
+ * Reprint the whole doc on every iteration
128
+ * Declare "done" without the Stage 3 reader test
129
+ * Generate doc content from scratch when the user has existing context — gap-closing is the whole point
@@ -0,0 +1,16 @@
1
+ {
2
+ "skill": "doc-coauthoring",
3
+ "description": "5 should-trigger + 5 should-not-trigger queries. Should-trigger phrasings reflect real co-authoring asks for PRDs / specs / decision docs. Should-not-trigger near-misses share doc-writing vocabulary but route elsewhere (agent-docs-writing, readme-writing, adr-create, code docs, translations).",
4
+ "queries": [
5
+ {"q": "Help me draft a PRD for the new analytics feature — I have a lot of context but no structure yet", "trigger": true},
6
+ {"q": "We need a design doc for the OAuth migration before next week's review. Can you walk me through writing it?", "trigger": true},
7
+ {"q": "I have to write up a decision doc about dropping Redis. Where do we start?", "trigger": true},
8
+ {"q": "Need an RFC for the data-export rate-limit change before tomorrow's architecture sync", "trigger": true},
9
+ {"q": "Lass uns einen Spec für das neue Webhook-Verfahren zusammenstellen — du fragst, ich antworte", "trigger": true},
10
+ {"q": "Add a section to AGENTS.md about the new env vars we just introduced", "trigger": false},
11
+ {"q": "Update the README with the new install instructions for the docker variant", "trigger": false},
12
+ {"q": "Write an ADR for the queue-broker switch from Redis to SQS", "trigger": false},
13
+ {"q": "Add docstrings to all public methods on the OrderService class", "trigger": false},
14
+ {"q": "Translate the lang/de strings to French for the new locale rollout", "trigger": false}
15
+ ]
16
+ }