baldart 3.6.2

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 (230) hide show
  1. package/CHANGELOG.md +599 -0
  2. package/README.md +566 -0
  3. package/VERSION +1 -0
  4. package/bin/baldart.js +143 -0
  5. package/framework/.claude/agents/REGISTRY.md +169 -0
  6. package/framework/.claude/agents/api-perf-cost-auditor.md +291 -0
  7. package/framework/.claude/agents/code-reviewer.md +350 -0
  8. package/framework/.claude/agents/codebase-architect.md +391 -0
  9. package/framework/.claude/agents/coder.md +291 -0
  10. package/framework/.claude/agents/deep-human-insight.md +198 -0
  11. package/framework/.claude/agents/doc-reviewer.md +440 -0
  12. package/framework/.claude/agents/email-deliverability-architect.md +193 -0
  13. package/framework/.claude/agents/hybrid-ml-architect.md +285 -0
  14. package/framework/.claude/agents/hyper-gamification-designer.md +149 -0
  15. package/framework/.claude/agents/legal-counsel-gdpr.md +179 -0
  16. package/framework/.claude/agents/marketing-conversion-strategist.md +162 -0
  17. package/framework/.claude/agents/motion-expert.md +108 -0
  18. package/framework/.claude/agents/onboarding-architect-lead.md +230 -0
  19. package/framework/.claude/agents/plan-auditor.md +546 -0
  20. package/framework/.claude/agents/prd-card-writer.md +372 -0
  21. package/framework/.claude/agents/prd.md +744 -0
  22. package/framework/.claude/agents/qa-sentinel.md +305 -0
  23. package/framework/.claude/agents/remotion-animator-orchestrator.md +218 -0
  24. package/framework/.claude/agents/security-reviewer.md +276 -0
  25. package/framework/.claude/agents/senior-researcher.md +175 -0
  26. package/framework/.claude/agents/seo-analytics-strategist.md +156 -0
  27. package/framework/.claude/agents/skill-improver.md +61 -0
  28. package/framework/.claude/agents/ui-expert.md +191 -0
  29. package/framework/.claude/agents/visual-designer.md +190 -0
  30. package/framework/.claude/agents/website-orchestrator.md +118 -0
  31. package/framework/.claude/agents/wiki-curator.md +145 -0
  32. package/framework/.claude/commands/baldart-push.md +15 -0
  33. package/framework/.claude/commands/check.md +237 -0
  34. package/framework/.claude/commands/codexreview.md +203 -0
  35. package/framework/.claude/commands/design-review.md +11 -0
  36. package/framework/.claude/commands/issue-review.md +34 -0
  37. package/framework/.claude/commands/new.md +331 -0
  38. package/framework/.claude/commands/qa.md +257 -0
  39. package/framework/.claude/hooks/framework-edit-gate.js +208 -0
  40. package/framework/.claude/hooks/lint-before-commit.sh.template +66 -0
  41. package/framework/.claude/settings.local.json.example +32 -0
  42. package/framework/.claude/skills/api-design-principles/SKILL.md +567 -0
  43. package/framework/.claude/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  44. package/framework/.claude/skills/api-design-principles/assets/rest-api-template.py +182 -0
  45. package/framework/.claude/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  46. package/framework/.claude/skills/api-design-principles/references/rest-best-practices.md +408 -0
  47. package/framework/.claude/skills/baldart-push/SKILL.md +222 -0
  48. package/framework/.claude/skills/bug/SKILL.md +200 -0
  49. package/framework/.claude/skills/bug/references/logging-patterns.md +174 -0
  50. package/framework/.claude/skills/capture/SKILL.md +125 -0
  51. package/framework/.claude/skills/capture/references/synthesis-template.md +42 -0
  52. package/framework/.claude/skills/context-primer/SKILL.md +189 -0
  53. package/framework/.claude/skills/copywriting/SKILL.md +273 -0
  54. package/framework/.claude/skills/copywriting/references/copy-frameworks.md +338 -0
  55. package/framework/.claude/skills/copywriting/references/natural-transitions.md +252 -0
  56. package/framework/.claude/skills/doc-writing-for-rag/SKILL.md +119 -0
  57. package/framework/.claude/skills/doc-writing-for-rag/references/before-after-examples.md +291 -0
  58. package/framework/.claude/skills/doc-writing-for-rag/references/compact-templates.md +183 -0
  59. package/framework/.claude/skills/doc-writing-for-rag/references/frontmatter-minimal.md +112 -0
  60. package/framework/.claude/skills/doc-writing-for-rag/references/line-count-targets.md +110 -0
  61. package/framework/.claude/skills/doc-writing-for-rag/references/schemas-and-errors.md +129 -0
  62. package/framework/.claude/skills/find-skills/SKILL.md +133 -0
  63. package/framework/.claude/skills/frontend-design/LICENSE.txt +177 -0
  64. package/framework/.claude/skills/frontend-design/SKILL.md +84 -0
  65. package/framework/.claude/skills/gamification-design/SKILL.md +130 -0
  66. package/framework/.claude/skills/issue-review/SKILL.md +45 -0
  67. package/framework/.claude/skills/kie-ai/SKILL.md +262 -0
  68. package/framework/.claude/skills/kie-ai/references/models-catalog.md +272 -0
  69. package/framework/.claude/skills/kie-ai/scripts/kie_api.sh +209 -0
  70. package/framework/.claude/skills/kie-ai/scripts/remove_greenscreen.py +69 -0
  71. package/framework/.claude/skills/kie-ai/scripts/setup_api_key.sh +77 -0
  72. package/framework/.claude/skills/motion-design/LICENSE +21 -0
  73. package/framework/.claude/skills/motion-design/README.md +82 -0
  74. package/framework/.claude/skills/motion-design/SKILL.md +336 -0
  75. package/framework/.claude/skills/motion-design/director/choreography.md +93 -0
  76. package/framework/.claude/skills/motion-design/director/context-adaptation.md +83 -0
  77. package/framework/.claude/skills/motion-design/director/core-philosophy.md +53 -0
  78. package/framework/.claude/skills/motion-design/director/decision-framework.md +91 -0
  79. package/framework/.claude/skills/motion-design/director/disney-principles.md +102 -0
  80. package/framework/.claude/skills/motion-design/director/emotion-mapping.md +71 -0
  81. package/framework/.claude/skills/motion-design/director/motion-personality.md +89 -0
  82. package/framework/.claude/skills/motion-design/director/narrative-structure.md +62 -0
  83. package/framework/.claude/skills/motion-design/patterns/ambient-continuous.md +81 -0
  84. package/framework/.claude/skills/motion-design/patterns/entrance-exit.md +82 -0
  85. package/framework/.claude/skills/motion-design/patterns/multi-element.md +69 -0
  86. package/framework/.claude/skills/motion-design/patterns/state-feedback.md +96 -0
  87. package/framework/.claude/skills/motion-design/reference/property-selection.md +95 -0
  88. package/framework/.claude/skills/motion-design/reference/quality-checklist.md +67 -0
  89. package/framework/.claude/skills/motion-design/reference/timing-easing-tables.md +106 -0
  90. package/framework/.claude/skills/motion-design/reference/troubleshooting.md +73 -0
  91. package/framework/.claude/skills/new/SKILL.md +1687 -0
  92. package/framework/.claude/skills/playwright-skill/API_REFERENCE.md +652 -0
  93. package/framework/.claude/skills/playwright-skill/SKILL.md +157 -0
  94. package/framework/.claude/skills/playwright-skill/package.json +26 -0
  95. package/framework/.claude/skills/prd/SKILL.md +228 -0
  96. package/framework/.claude/skills/prd/assets/card-template.yml +232 -0
  97. package/framework/.claude/skills/prd/assets/epic-template.yml +190 -0
  98. package/framework/.claude/skills/prd/assets/prd-template.md +230 -0
  99. package/framework/.claude/skills/prd/assets/state-template.md +78 -0
  100. package/framework/.claude/skills/prd/references/api-perf-gate.md +152 -0
  101. package/framework/.claude/skills/prd/references/audit-phase.md +478 -0
  102. package/framework/.claude/skills/prd/references/backlog-phase.md +145 -0
  103. package/framework/.claude/skills/prd/references/discovery-phase.md +359 -0
  104. package/framework/.claude/skills/prd/references/impact-analysis.md +233 -0
  105. package/framework/.claude/skills/prd/references/prd-add-phase.md +214 -0
  106. package/framework/.claude/skills/prd/references/prd-writing-phase.md +145 -0
  107. package/framework/.claude/skills/prd/references/research-phase.md +216 -0
  108. package/framework/.claude/skills/prd/references/ui-design-phase.md +61 -0
  109. package/framework/.claude/skills/prd/references/validation-phase.md +72 -0
  110. package/framework/.claude/skills/prd-add/SKILL.md +222 -0
  111. package/framework/.claude/skills/prd-add/references/impact-analysis.md +233 -0
  112. package/framework/.claude/skills/remotion-best-practices/SKILL.md +48 -0
  113. package/framework/.claude/skills/remotion-best-practices/rules/3d.md +86 -0
  114. package/framework/.claude/skills/remotion-best-practices/rules/animations.md +29 -0
  115. package/framework/.claude/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  116. package/framework/.claude/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  117. package/framework/.claude/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
  118. package/framework/.claude/skills/remotion-best-practices/rules/assets.md +78 -0
  119. package/framework/.claude/skills/remotion-best-practices/rules/audio.md +169 -0
  120. package/framework/.claude/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
  121. package/framework/.claude/skills/remotion-best-practices/rules/can-decode.md +75 -0
  122. package/framework/.claude/skills/remotion-best-practices/rules/charts.md +58 -0
  123. package/framework/.claude/skills/remotion-best-practices/rules/compositions.md +141 -0
  124. package/framework/.claude/skills/remotion-best-practices/rules/display-captions.md +184 -0
  125. package/framework/.claude/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  126. package/framework/.claude/skills/remotion-best-practices/rules/fonts.md +152 -0
  127. package/framework/.claude/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  128. package/framework/.claude/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  129. package/framework/.claude/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
  130. package/framework/.claude/skills/remotion-best-practices/rules/gifs.md +141 -0
  131. package/framework/.claude/skills/remotion-best-practices/rules/images.md +130 -0
  132. package/framework/.claude/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
  133. package/framework/.claude/skills/remotion-best-practices/rules/light-leaks.md +73 -0
  134. package/framework/.claude/skills/remotion-best-practices/rules/lottie.md +67 -0
  135. package/framework/.claude/skills/remotion-best-practices/rules/maps.md +401 -0
  136. package/framework/.claude/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  137. package/framework/.claude/skills/remotion-best-practices/rules/measuring-text.md +143 -0
  138. package/framework/.claude/skills/remotion-best-practices/rules/parameters.md +98 -0
  139. package/framework/.claude/skills/remotion-best-practices/rules/sequencing.md +118 -0
  140. package/framework/.claude/skills/remotion-best-practices/rules/subtitles.md +36 -0
  141. package/framework/.claude/skills/remotion-best-practices/rules/tailwind.md +11 -0
  142. package/framework/.claude/skills/remotion-best-practices/rules/text-animations.md +20 -0
  143. package/framework/.claude/skills/remotion-best-practices/rules/timing.md +179 -0
  144. package/framework/.claude/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
  145. package/framework/.claude/skills/remotion-best-practices/rules/transitions.md +197 -0
  146. package/framework/.claude/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
  147. package/framework/.claude/skills/remotion-best-practices/rules/trimming.md +52 -0
  148. package/framework/.claude/skills/remotion-best-practices/rules/videos.md +171 -0
  149. package/framework/.claude/skills/seo-audit/SKILL.md +394 -0
  150. package/framework/.claude/skills/seo-audit/references/aeo-geo-patterns.md +279 -0
  151. package/framework/.claude/skills/seo-audit/references/ai-writing-detection.md +190 -0
  152. package/framework/.claude/skills/simplify/SKILL.md +137 -0
  153. package/framework/.claude/skills/skill-creator/LICENSE.txt +202 -0
  154. package/framework/.claude/skills/skill-creator/SKILL.md +356 -0
  155. package/framework/.claude/skills/skill-creator/references/output-patterns.md +82 -0
  156. package/framework/.claude/skills/skill-creator/references/workflows.md +28 -0
  157. package/framework/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
  158. package/framework/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
  159. package/framework/.claude/skills/skill-creator/scripts/quick_validate.py +95 -0
  160. package/framework/.claude/skills/ui-design/SKILL.md +199 -0
  161. package/framework/.claude/skills/ui-design/references/component-discovery.md +54 -0
  162. package/framework/.claude/skills/ui-design/references/evaluation.md +171 -0
  163. package/framework/.claude/skills/ui-design/references/generation.md +109 -0
  164. package/framework/.claude/skills/ui-design/references/inventory.md +59 -0
  165. package/framework/.claude/skills/webapp-testing/LICENSE.txt +202 -0
  166. package/framework/.claude/skills/webapp-testing/SKILL.md +123 -0
  167. package/framework/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
  168. package/framework/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
  169. package/framework/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
  170. package/framework/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
  171. package/framework/.claude/skills/worktree-manager/SKILL.md +680 -0
  172. package/framework/AGENTS.md +240 -0
  173. package/framework/agents/api-contracts.md +137 -0
  174. package/framework/agents/architecture.md +145 -0
  175. package/framework/agents/coding-standards.md +148 -0
  176. package/framework/agents/data-model.md +110 -0
  177. package/framework/agents/deployment-protocol.md +232 -0
  178. package/framework/agents/design-review.md +172 -0
  179. package/framework/agents/env-reference.md +171 -0
  180. package/framework/agents/github-issue-subagent.md +252 -0
  181. package/framework/agents/index.md +261 -0
  182. package/framework/agents/llm-wiki-methodology.md +216 -0
  183. package/framework/agents/maintenance-protocol.md +305 -0
  184. package/framework/agents/observability.md +162 -0
  185. package/framework/agents/performance.md +155 -0
  186. package/framework/agents/project-context.md +145 -0
  187. package/framework/agents/runbook.md +208 -0
  188. package/framework/agents/security.md +168 -0
  189. package/framework/agents/skills-mapping.md +286 -0
  190. package/framework/agents/testing.md +111 -0
  191. package/framework/agents/workflows.md +215 -0
  192. package/framework/docs/PROJECT-CONFIGURATION.md +336 -0
  193. package/framework/docs/references/brand-guidelines.md +170 -0
  194. package/framework/docs/references/ui-guidelines.template.md +182 -0
  195. package/framework/routines/code-review.routine.yml +46 -0
  196. package/framework/routines/doc-review.routine.yml +45 -0
  197. package/framework/routines/ds-drift.routine.yml +52 -0
  198. package/framework/routines/full-sweep.routine.yml +51 -0
  199. package/framework/routines/index.yml +70 -0
  200. package/framework/routines/skill-improve.routine.yml +50 -0
  201. package/framework/routines/wiki-review.routine.yml +45 -0
  202. package/framework/templates/baldart.config.template.yml +113 -0
  203. package/framework/templates/breaking-change-checklist.md +484 -0
  204. package/framework/templates/feature-card.template.yml +125 -0
  205. package/framework/templates/overlays/README.md +44 -0
  206. package/framework/templates/overlays/copywriting.fidelity-example.md +62 -0
  207. package/framework/templates/overlays/ui-design.fidelity-example.md +75 -0
  208. package/framework/templates/skill-project-context.snippet.md +19 -0
  209. package/framework/templates/spec.template.md +208 -0
  210. package/package.json +51 -0
  211. package/src/commands/add.js +229 -0
  212. package/src/commands/configure.js +385 -0
  213. package/src/commands/doctor.js +486 -0
  214. package/src/commands/migrate.js +185 -0
  215. package/src/commands/push.js +0 -0
  216. package/src/commands/routines.js +269 -0
  217. package/src/commands/status.js +130 -0
  218. package/src/commands/update.js +419 -0
  219. package/src/commands/version.js +88 -0
  220. package/src/utils/contamination.js +400 -0
  221. package/src/utils/git.js +181 -0
  222. package/src/utils/hooks.js +152 -0
  223. package/src/utils/routine-adapters/claude-code-cloud.js +78 -0
  224. package/src/utils/routine-adapters/cron.js +138 -0
  225. package/src/utils/routine-adapters/github-actions.js +141 -0
  226. package/src/utils/routine-adapters/index.js +21 -0
  227. package/src/utils/routines.js +166 -0
  228. package/src/utils/state.js +143 -0
  229. package/src/utils/symlinks.js +425 -0
  230. package/src/utils/ui.js +133 -0
@@ -0,0 +1,189 @@
1
+ ---
2
+ name: cont
3
+ description: >
4
+ Load codebase context silently before starting work, optimized for LLM
5
+ comprehension using research-backed structured formatting.
6
+ Trigger: /cont followed by keywords (e.g., "/cont planner merchant",
7
+ "/cont login user", "/cont dio menu"). Launches codebase-architect
8
+ as subagent, returns one-line Italian confirmation. Keeps main
9
+ context window clean. Also invoked automatically by /prd at kickoff.
10
+ ---
11
+
12
+ # Context Primer
13
+
14
+ Load structured, task-adaptive context about a topic into the conversation before the user's real prompt. Based on research findings from Liu et al. 2023 (Lost in the Middle), Wu et al. 2024 (ClashEval), Asai et al. 2023 (Self-RAG), and Anthropic 2025 engineering guidance.
15
+
16
+ ## Project Context
17
+
18
+ **Reads from `baldart.config.yml`:** `paths.backlog_dir`, `paths.references_dir`, `paths.prd_dir`, `paths.wiki_dir`, `paths.adrs_dir`.
19
+ **Gated by features:** `features.has_backlog` (skip backlog grep when `false`), `features.has_wiki_overlay` (skip wiki search), `features.has_adrs` (skip ADR includes), `features.has_prd_workflow` (skip PRD reads).
20
+ **Overlay:** loads `.baldart/overlays/context-primer.md` if present — project-specific topic vocabulary, must-include canonical docs.
21
+ **On missing/empty keys:** ask the user; do not assume defaults. See `framework/agents/project-context.md` § 3.
22
+
23
+ ## Key Research Principles
24
+
25
+ 1. **Constraints FIRST** — primacy effect: critical info at start gets +30% recall
26
+ 2. **XML structure** — reduces misinterpretation vs flat text (Anthropic 2025)
27
+ 3. **Dense > verbose** — 50% compression preserves 97% quality (Li et al. 2023)
28
+ 4. **Stale context is harmful** — models override correct knowledge 60%+ with
29
+ erroneous retrieved content (Wu et al. 2024). Timestamp all memory items.
30
+ 5. **Task-adaptive selection** — bug fixes need different context than new features
31
+
32
+ ## Workflow
33
+
34
+ 1. Extract topic keywords from the user's input (e.g., "planner merchant").
35
+
36
+ 2. **Detect task type** from keywords and conversation context:
37
+
38
+ | Task Type | Signal Words |
39
+ |-----------|-------------|
40
+ | `bug-fix` | fix, bug, broken, error, crash, fails, non funziona |
41
+ | `new-feature` | add, new, create, implement, feature, prd |
42
+ | `refactor` | refactor, clean, simplify, migrate, move |
43
+ | `doc-update` | doc, docs, document, readme, update docs |
44
+ | `query` | how, what, where, why, explain, check, capire |
45
+
46
+ Default to `query` if ambiguous.
47
+
48
+ 3. Launch `codebase-architect` agent with this prompt template:
49
+
50
+ ```
51
+ Load context about: {keywords}
52
+ Task type: {task_type}
53
+
54
+ TOKEN BUDGET: stay under 15K tokens total. Prefer RAG over file reads.
55
+
56
+ SEARCH STRATEGY — RAG-first, verify-only-if-needed:
57
+
58
+ 1. Call search_docs(query="{keywords}", mode="hybrid", invoker_agent="context-primer").
59
+ Pass invoker_agent="context-primer" — this OVERRIDES your own default
60
+ (codebase-architect) for every call you make on behalf of this skill,
61
+ so telemetry attributes the query to the initiating skill, not the subagent.
62
+ Check rag_telemetry.verdict in the response:
63
+ - "useful" → RAG is your PRIMARY source. Go to step 4.
64
+ - "weak"/"fallback_degraded" → supplement with steps 2-3.
65
+ - "empty" → full manual search (steps 2-3).
66
+
67
+ If the topic is documentation-heavy and `features.has_wiki_overlay: true`,
68
+ include `${paths.wiki_dir}/index.md` and the project's wiki-overlay ADR
69
+ (in `${paths.adrs_dir}/`) in the search set, plus any must-include docs
70
+ listed in `.baldart/overlays/context-primer.md`.
71
+
72
+ 2. ONLY IF RAG was weak/empty — targeted searches:
73
+ a. Agent memory: grep MEMORY.md index for topic match, read ONLY
74
+ matching files (skip files >20KB unless filename matches keywords).
75
+ b. Backlog (when `features.has_backlog: true`): grep `${paths.backlog_dir}/*.yml` for card titles matching keywords.
76
+ Read only the matching cards, not all cards.
77
+ c. Git: `git log --oneline -10 --grep="{keywords}"` (10 results max).
78
+
79
+ 3. ONLY IF RAG was empty — broader search:
80
+ a. Grep the project's source root for 2-3 specific identifiers from steps 1-2.
81
+ b. Read key file headers (first 50 lines) to identify structure.
82
+ DO NOT read `${paths.prd_dir}/` or `${paths.references_dir}/` files in full —
83
+ RAG already indexes them. Only read a specific doc section if RAG
84
+ pointed to it but the preview was insufficient.
85
+
86
+ 4. Targeted verification (ALL cases):
87
+ - Verify ONLY runtime-sensitive claims from Obsidian results (auth
88
+ patterns, API contracts, current schema) against actual code.
89
+ - Files <200 lines: read in full.
90
+ - Files 200-500 lines: read first 50 lines + specific section.
91
+ - Files >500 lines: grep for key exports/functions, read only those.
92
+ - NEVER read agent memory files >20KB in full.
93
+
94
+ TASK-ADAPTIVE RULES:
95
+ - "query": RAG + memory only. Skip source code unless code-specific.
96
+ - "bug-fix": RAG + recent git changes + error-related code. Skip arch docs.
97
+ - "new-feature": RAG + patterns in same domain + ADRs. Skip unrelated areas.
98
+ - "refactor": RAG + affected files + dependency refs. Skip design rationale.
99
+ - "doc-update": RAG + SSOT registry. Skip source code.
100
+
101
+ WIKI OVERLAY ROUTING:
102
+ - If the topic is about synthesized knowledge, dashboards, reading guides, or
103
+ recurring documentation questions, prefer the derived wiki overlay as a
104
+ compression layer.
105
+ - Always verify wiki claims against canonical repo docs before using them as
106
+ working truth.
107
+
108
+ Return output in this EXACT XML format (30-50 lines max):
109
+
110
+ <context_primer task_type="{task_type}">
111
+ <constraints>
112
+ <!-- MOST CRITICAL — active gotchas, forbidden patterns, known bugs -->
113
+ <!-- Put highest-impact constraints first (primacy effect) -->
114
+ <c>[MUST] constraint text (source: file or AGENTS.md section)</c>
115
+ </constraints>
116
+ <area>One-line description of the module/domain</area>
117
+ <key_code>
118
+ <!-- 3-5 most relevant source files — paths only, not content -->
119
+ <file path="src/path/to/file.ts">Brief role description</file>
120
+ </key_code>
121
+ <key_docs>
122
+ <!-- 2-4 most relevant doc/spec/ADR paths -->
123
+ <doc ref="docs/path/to/doc.md">Brief description</doc>
124
+ </key_docs>
125
+ <status>Current state: active card, last commit, blockers</status>
126
+ <memory_notes>
127
+ <!-- Memory-derived content WITH acquisition dates -->
128
+ <note acquired="YYYY-MM-DD">Note content</note>
129
+ <note acquired="YYYY-MM-DD" stale="true">Old note [STALE — verify]</note>
130
+ </memory_notes>
131
+ <rag_quality verdict="{rag_telemetry.verdict}" count="{count}" mode="{mode}"/>
132
+ </context_primer>
133
+
134
+ WIKI LOG INSTRUMENTATION (FEAT-0805 — tap point of the auto-learning loop):
135
+ After every search_docs call, inspect the returned rag_telemetry.verdict.
136
+ If verdict ∈ {"weak", "empty", "fallback_degraded"}, log one entry to the
137
+ wiki log so the nightly wiki-review can detect coverage gaps:
138
+
139
+ python3 -c "import sys; sys.path.insert(0, 'tools/doc-rag'); \
140
+ from wiki_log import append_entry; \
141
+ append_entry(entry_type='query', title='<query_short>', \
142
+ agent='context-primer', \
143
+ context={'verdict': '<verdict>', 'top_score': <top_score>, \
144
+ 'count': <count>}, \
145
+ refs=[], outcome='<verdict>')"
146
+
147
+ GRACEFUL DEGRADE (MANDATORY): if the import fails, the file is missing, or
148
+ append_entry raises for any reason, emit a SINGLE line to stderr of the form
149
+ "wiki_log unavailable: <reason>" and CONTINUE the primary task. NEVER abort,
150
+ retry, or let the exception bubble. The loop is observational; its failure
151
+ must never block orientation.
152
+
153
+ CRITICAL OUTPUT RULES:
154
+ - Constraints section MUST come FIRST (research: primacy effect +30%)
155
+ - Keep total output under 50 lines — dense beats verbose
156
+ - Include <rag_quality> tag so the caller can track RAG usefulness
157
+ - Every memory_notes entry MUST have an acquired date
158
+ - If a memory item file was modified >7 days ago AND refers to current
159
+ state (not permanent decisions), mark it stale="true"
160
+ - Do NOT include file contents or code snippets. Paths and summaries only.
161
+ - If no constraints found, use <constraints/> (empty, not omitted)
162
+ ```
163
+
164
+ 4. After the agent returns, respond to the user with ONLY:
165
+
166
+ ```
167
+ Contesto caricato ({task_type}): {one-line summary of the area}.
168
+ Pronto.
169
+ ```
170
+
171
+ The XML context lives in the conversation history from the agent result.
172
+ It will inform subsequent responses without cluttering visible output.
173
+
174
+ ## Examples
175
+
176
+ - `/cont planner merchant` → `Contesto caricato (query): CTP planner v2 (table management merchant). Pronto.`
177
+ - `/cont fix booking overlap` → `Contesto caricato (bug-fix): Booking overlap validation in reservation API. Pronto.`
178
+ - `/cont new prize scanning` → `Contesto caricato (new-feature): Prize scanning flow (wheel + scratch card). Pronto.`
179
+
180
+ ## Rules
181
+
182
+ - ALWAYS use `codebase-architect` as `subagent_type` in the Agent tool call.
183
+ - NEVER dump the agent's full output to the user. Only the confirmation line.
184
+ - If the user provides fewer than 1 topic keyword (e.g., bare "/cont"),
185
+ ask for more specific keywords.
186
+ - The agent runs in foreground (not background) — the user waits for
187
+ confirmation before sending their real prompt.
188
+ - When invoked by another skill (e.g., /prd), the task_type is inferred
189
+ from that skill's context (e.g., /prd → "new-feature").
@@ -0,0 +1,273 @@
1
+ ---
2
+ name: copywriting
3
+ version: 1.0.0
4
+ description: When the user wants to write, rewrite, or improve marketing copy for any page — including homepage, landing pages, pricing pages, feature pages, about pages, or product pages. Also use when the user says "write copy for," "improve this copy," "rewrite this page," "marketing copy," "headline help," or "CTA copy." For email copy, see email-sequence. For popup copy, see popup-cro.
5
+ ---
6
+
7
+ # Copywriting
8
+
9
+ You are an expert conversion copywriter. Your goal is to write marketing copy that is clear, compelling, and drives action.
10
+
11
+ ## Project Context
12
+
13
+ **Reads from `baldart.config.yml`:** `paths.ui_guidelines`, `paths.design_system`, `identity.brand_name`, `identity.design_philosophy`, `identity.language`, `identity.audience_segments`.
14
+ **Gated by features:** `features.has_design_system` (when `true`, the design-system area docs become BLOCKING reads for segment-aware copy).
15
+ **Overlay:** loads `.baldart/overlays/copywriting.md` if present — this is where project-specific brand voice pillars, audience register rules, and language constraints live. Sections marked `## [OVERRIDE] <topic>` replace base sections.
16
+ **On missing/empty keys:** ask the user; do not assume defaults. See `framework/agents/project-context.md` § 3.
17
+
18
+ ## Brand Voice Context (MANDATORY for UI copy)
19
+
20
+ When writing copy that will render in UI (buttons, empty states, banners, confirmation dialogs, inline hints, navigation labels, error messages), the brand voice is canonical — do not invent a new tone on the fly. The following reads are BLOCKING prerequisites:
21
+
22
+ 1. **MANDATORY / BLOCKING** — `${paths.ui_guidelines}`: canonical brand voice pillars, philosophy, and language register. Treat the project's stated voice as non-negotiable.
23
+ 2. **MANDATORY / BLOCKING when overlay present** — `.baldart/overlays/copywriting.md`: project-specific brand voice extensions (e.g. fixed voice pillars, tone-by-audience matrix, forbidden vocabulary).
24
+ 3. **MANDATORY when `features.has_design_system: true` AND `identity.audience_segments` is non-empty** — for each segment in scope, read `${paths.design_system}/areas/<segment>.md` (if present) to pick up segment-specific copy register (e.g. operational vs. playful).
25
+ 4. **MANDATORY when `features.has_design_system: true` AND copy affects visual hierarchy** — `${paths.design_system}/INDEX.md` for component variant + tone-by-component mapping.
26
+
27
+ Apply the project's voice when choosing headline tone, CTA voice, error-message register, and empty-state copy. Keep marketing hyperbole out of transactional/system copy unless the overlay explicitly permits it — error and confirmation messages should default to direct and trustworthy.
28
+
29
+ **Language**: write all UI copy in `identity.language` (BCP-47). If `language: it`, write in Italian; if `language: en`, write in English; etc. Never mix languages within a UI string unless the project's overlay says otherwise.
30
+
31
+ **Audience segmentation**: if `identity.audience_segments` is non-empty, ask the user which segment(s) the copy targets before writing, then apply the segment's voice register.
32
+
33
+ ## Before Writing
34
+
35
+ **Check for product marketing context first:**
36
+ If `.claude/product-marketing-context.md` exists, read it before asking questions. Use that context and only ask for information not already covered or specific to this task.
37
+
38
+ Gather this context (ask if not provided):
39
+
40
+ ### 1. Page Purpose
41
+ - What type of page? (homepage, landing page, pricing, feature, about)
42
+ - What is the ONE primary action you want visitors to take?
43
+
44
+ ### 2. Audience
45
+ - Who is the ideal customer?
46
+ - What problem are they trying to solve?
47
+ - What objections or hesitations do they have?
48
+ - What language do they use to describe their problem?
49
+
50
+ ### 3. Product/Offer
51
+ - What are you selling or offering?
52
+ - What makes it different from alternatives?
53
+ - What's the key transformation or outcome?
54
+ - Any proof points (numbers, testimonials, case studies)?
55
+
56
+ ### 4. Context
57
+ - Where is traffic coming from? (ads, organic, email)
58
+ - What do visitors already know before arriving?
59
+
60
+ ---
61
+
62
+ ## Copywriting Principles
63
+
64
+ ### Clarity Over Cleverness
65
+ If you have to choose between clear and creative, choose clear.
66
+
67
+ ### Benefits Over Features
68
+ Features: What it does. Benefits: What that means for the customer.
69
+
70
+ ### Specificity Over Vagueness
71
+ - Vague: "Save time on your workflow"
72
+ - Specific: "Cut your weekly reporting from 4 hours to 15 minutes"
73
+
74
+ ### Customer Language Over Company Language
75
+ Use words your customers use. Mirror voice-of-customer from reviews, interviews, support tickets.
76
+
77
+ ### One Idea Per Section
78
+ Each section should advance one argument. Build a logical flow down the page.
79
+
80
+ ---
81
+
82
+ ## Writing Style Rules
83
+
84
+ ### Core Principles
85
+
86
+ 1. **Simple over complex** — "Use" not "utilize," "help" not "facilitate"
87
+ 2. **Specific over vague** — Avoid "streamline," "optimize," "innovative"
88
+ 3. **Active over passive** — "We generate reports" not "Reports are generated"
89
+ 4. **Confident over qualified** — Remove "almost," "very," "really"
90
+ 5. **Show over tell** — Describe the outcome instead of using adverbs
91
+ 6. **Honest over sensational** — Never fabricate statistics or testimonials
92
+
93
+ ### Quick Quality Check
94
+
95
+ - Jargon that could confuse outsiders?
96
+ - Sentences trying to do too much?
97
+ - Passive voice constructions?
98
+ - Exclamation points? (remove them)
99
+ - Marketing buzzwords without substance?
100
+
101
+ For thorough line-by-line review, use the **copy-editing** skill after your draft.
102
+
103
+ ---
104
+
105
+ ## Best Practices
106
+
107
+ ### Be Direct
108
+ Get to the point. Don't bury the value in qualifications.
109
+
110
+ ❌ Slack lets you share files instantly, from documents to images, directly in your conversations
111
+
112
+ ✅ Need to share a screenshot? Send as many documents, images, and audio files as your heart desires.
113
+
114
+ ### Use Rhetorical Questions
115
+ Questions engage readers and make them think about their own situation.
116
+ - "Hate returning stuff to Amazon?"
117
+ - "Tired of chasing approvals?"
118
+
119
+ ### Use Analogies When Helpful
120
+ Analogies make abstract concepts concrete and memorable.
121
+
122
+ ### Pepper in Humor (When Appropriate)
123
+ Puns and wit make copy memorable—but only if it fits the brand and doesn't undermine clarity.
124
+
125
+ ---
126
+
127
+ ## Page Structure Framework
128
+
129
+ ### Above the Fold
130
+
131
+ **Headline**
132
+ - Your single most important message
133
+ - Communicate core value proposition
134
+ - Specific > generic
135
+
136
+ **Example formulas:**
137
+ - "{Achieve outcome} without {pain point}"
138
+ - "The {category} for {audience}"
139
+ - "Never {unpleasant event} again"
140
+ - "{Question highlighting main pain point}"
141
+
142
+ **For comprehensive headline formulas**: See [references/copy-frameworks.md](references/copy-frameworks.md)
143
+
144
+ **For natural transition phrases**: See [references/natural-transitions.md](references/natural-transitions.md)
145
+
146
+ **Subheadline**
147
+ - Expands on headline
148
+ - Adds specificity
149
+ - 1-2 sentences max
150
+
151
+ **Primary CTA**
152
+ - Action-oriented button text
153
+ - Communicate what they get: "Start Free Trial" > "Sign Up"
154
+
155
+ ### Core Sections
156
+
157
+ | Section | Purpose |
158
+ |---------|---------|
159
+ | Social Proof | Build credibility (logos, stats, testimonials) |
160
+ | Problem/Pain | Show you understand their situation |
161
+ | Solution/Benefits | Connect to outcomes (3-5 key benefits) |
162
+ | How It Works | Reduce perceived complexity (3-4 steps) |
163
+ | Objection Handling | FAQ, comparisons, guarantees |
164
+ | Final CTA | Recap value, repeat CTA, risk reversal |
165
+
166
+ **For detailed section types and page templates**: See [references/copy-frameworks.md](references/copy-frameworks.md)
167
+
168
+ ---
169
+
170
+ ## CTA Copy Guidelines
171
+
172
+ **Weak CTAs (avoid):**
173
+ - Submit, Sign Up, Learn More, Click Here, Get Started
174
+
175
+ **Strong CTAs (use):**
176
+ - Start Free Trial
177
+ - Get [Specific Thing]
178
+ - See [Product] in Action
179
+ - Create Your First [Thing]
180
+ - Download the Guide
181
+
182
+ **Formula:** [Action Verb] + [What They Get] + [Qualifier if needed]
183
+
184
+ Examples:
185
+ - "Start My Free Trial"
186
+ - "Get the Complete Checklist"
187
+ - "See Pricing for My Team"
188
+
189
+ ---
190
+
191
+ ## Page-Specific Guidance
192
+
193
+ ### Homepage
194
+ - Serve multiple audiences without being generic
195
+ - Lead with broadest value proposition
196
+ - Provide clear paths for different visitor intents
197
+
198
+ ### Landing Page
199
+ - Single message, single CTA
200
+ - Match headline to ad/traffic source
201
+ - Complete argument on one page
202
+
203
+ ### Pricing Page
204
+ - Help visitors choose the right plan
205
+ - Address "which is right for me?" anxiety
206
+ - Make recommended plan obvious
207
+
208
+ ### Feature Page
209
+ - Connect feature → benefit → outcome
210
+ - Show use cases and examples
211
+ - Clear path to try or buy
212
+
213
+ ### About Page
214
+ - Tell the story of why you exist
215
+ - Connect mission to customer benefit
216
+ - Still include a CTA
217
+
218
+ ---
219
+
220
+ ## Voice and Tone
221
+
222
+ Before writing, establish:
223
+
224
+ **Formality level:**
225
+ - Casual/conversational
226
+ - Professional but friendly
227
+ - Formal/enterprise
228
+
229
+ **Brand personality:**
230
+ - Playful or serious?
231
+ - Bold or understated?
232
+ - Technical or accessible?
233
+
234
+ Maintain consistency, but adjust intensity:
235
+ - Headlines can be bolder
236
+ - Body copy should be clearer
237
+ - CTAs should be action-oriented
238
+
239
+ ---
240
+
241
+ ## Output Format
242
+
243
+ When writing copy, provide:
244
+
245
+ ### Page Copy
246
+ Organized by section:
247
+ - Headline, Subheadline, CTA
248
+ - Section headers and body copy
249
+ - Secondary CTAs
250
+
251
+ ### Annotations
252
+ For key elements, explain:
253
+ - Why you made this choice
254
+ - What principle it applies
255
+
256
+ ### Alternatives
257
+ For headlines and CTAs, provide 2-3 options:
258
+ - Option A: [copy] — [rationale]
259
+ - Option B: [copy] — [rationale]
260
+
261
+ ### Meta Content (if relevant)
262
+ - Page title (for SEO)
263
+ - Meta description
264
+
265
+ ---
266
+
267
+ ## Related Skills
268
+
269
+ - **copy-editing**: For polishing existing copy (use after your draft)
270
+ - **page-cro**: If page structure/strategy needs work, not just copy
271
+ - **email-sequence**: For email copywriting
272
+ - **popup-cro**: For popup and modal copy
273
+ - **ab-test-setup**: To test copy variations