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.
- package/CHANGELOG.md +599 -0
- package/README.md +566 -0
- package/VERSION +1 -0
- package/bin/baldart.js +143 -0
- package/framework/.claude/agents/REGISTRY.md +169 -0
- package/framework/.claude/agents/api-perf-cost-auditor.md +291 -0
- package/framework/.claude/agents/code-reviewer.md +350 -0
- package/framework/.claude/agents/codebase-architect.md +391 -0
- package/framework/.claude/agents/coder.md +291 -0
- package/framework/.claude/agents/deep-human-insight.md +198 -0
- package/framework/.claude/agents/doc-reviewer.md +440 -0
- package/framework/.claude/agents/email-deliverability-architect.md +193 -0
- package/framework/.claude/agents/hybrid-ml-architect.md +285 -0
- package/framework/.claude/agents/hyper-gamification-designer.md +149 -0
- package/framework/.claude/agents/legal-counsel-gdpr.md +179 -0
- package/framework/.claude/agents/marketing-conversion-strategist.md +162 -0
- package/framework/.claude/agents/motion-expert.md +108 -0
- package/framework/.claude/agents/onboarding-architect-lead.md +230 -0
- package/framework/.claude/agents/plan-auditor.md +546 -0
- package/framework/.claude/agents/prd-card-writer.md +372 -0
- package/framework/.claude/agents/prd.md +744 -0
- package/framework/.claude/agents/qa-sentinel.md +305 -0
- package/framework/.claude/agents/remotion-animator-orchestrator.md +218 -0
- package/framework/.claude/agents/security-reviewer.md +276 -0
- package/framework/.claude/agents/senior-researcher.md +175 -0
- package/framework/.claude/agents/seo-analytics-strategist.md +156 -0
- package/framework/.claude/agents/skill-improver.md +61 -0
- package/framework/.claude/agents/ui-expert.md +191 -0
- package/framework/.claude/agents/visual-designer.md +190 -0
- package/framework/.claude/agents/website-orchestrator.md +118 -0
- package/framework/.claude/agents/wiki-curator.md +145 -0
- package/framework/.claude/commands/baldart-push.md +15 -0
- package/framework/.claude/commands/check.md +237 -0
- package/framework/.claude/commands/codexreview.md +203 -0
- package/framework/.claude/commands/design-review.md +11 -0
- package/framework/.claude/commands/issue-review.md +34 -0
- package/framework/.claude/commands/new.md +331 -0
- package/framework/.claude/commands/qa.md +257 -0
- package/framework/.claude/hooks/framework-edit-gate.js +208 -0
- package/framework/.claude/hooks/lint-before-commit.sh.template +66 -0
- package/framework/.claude/settings.local.json.example +32 -0
- package/framework/.claude/skills/api-design-principles/SKILL.md +567 -0
- package/framework/.claude/skills/api-design-principles/assets/api-design-checklist.md +155 -0
- package/framework/.claude/skills/api-design-principles/assets/rest-api-template.py +182 -0
- package/framework/.claude/skills/api-design-principles/references/graphql-schema-design.md +583 -0
- package/framework/.claude/skills/api-design-principles/references/rest-best-practices.md +408 -0
- package/framework/.claude/skills/baldart-push/SKILL.md +222 -0
- package/framework/.claude/skills/bug/SKILL.md +200 -0
- package/framework/.claude/skills/bug/references/logging-patterns.md +174 -0
- package/framework/.claude/skills/capture/SKILL.md +125 -0
- package/framework/.claude/skills/capture/references/synthesis-template.md +42 -0
- package/framework/.claude/skills/context-primer/SKILL.md +189 -0
- package/framework/.claude/skills/copywriting/SKILL.md +273 -0
- package/framework/.claude/skills/copywriting/references/copy-frameworks.md +338 -0
- package/framework/.claude/skills/copywriting/references/natural-transitions.md +252 -0
- package/framework/.claude/skills/doc-writing-for-rag/SKILL.md +119 -0
- package/framework/.claude/skills/doc-writing-for-rag/references/before-after-examples.md +291 -0
- package/framework/.claude/skills/doc-writing-for-rag/references/compact-templates.md +183 -0
- package/framework/.claude/skills/doc-writing-for-rag/references/frontmatter-minimal.md +112 -0
- package/framework/.claude/skills/doc-writing-for-rag/references/line-count-targets.md +110 -0
- package/framework/.claude/skills/doc-writing-for-rag/references/schemas-and-errors.md +129 -0
- package/framework/.claude/skills/find-skills/SKILL.md +133 -0
- package/framework/.claude/skills/frontend-design/LICENSE.txt +177 -0
- package/framework/.claude/skills/frontend-design/SKILL.md +84 -0
- package/framework/.claude/skills/gamification-design/SKILL.md +130 -0
- package/framework/.claude/skills/issue-review/SKILL.md +45 -0
- package/framework/.claude/skills/kie-ai/SKILL.md +262 -0
- package/framework/.claude/skills/kie-ai/references/models-catalog.md +272 -0
- package/framework/.claude/skills/kie-ai/scripts/kie_api.sh +209 -0
- package/framework/.claude/skills/kie-ai/scripts/remove_greenscreen.py +69 -0
- package/framework/.claude/skills/kie-ai/scripts/setup_api_key.sh +77 -0
- package/framework/.claude/skills/motion-design/LICENSE +21 -0
- package/framework/.claude/skills/motion-design/README.md +82 -0
- package/framework/.claude/skills/motion-design/SKILL.md +336 -0
- package/framework/.claude/skills/motion-design/director/choreography.md +93 -0
- package/framework/.claude/skills/motion-design/director/context-adaptation.md +83 -0
- package/framework/.claude/skills/motion-design/director/core-philosophy.md +53 -0
- package/framework/.claude/skills/motion-design/director/decision-framework.md +91 -0
- package/framework/.claude/skills/motion-design/director/disney-principles.md +102 -0
- package/framework/.claude/skills/motion-design/director/emotion-mapping.md +71 -0
- package/framework/.claude/skills/motion-design/director/motion-personality.md +89 -0
- package/framework/.claude/skills/motion-design/director/narrative-structure.md +62 -0
- package/framework/.claude/skills/motion-design/patterns/ambient-continuous.md +81 -0
- package/framework/.claude/skills/motion-design/patterns/entrance-exit.md +82 -0
- package/framework/.claude/skills/motion-design/patterns/multi-element.md +69 -0
- package/framework/.claude/skills/motion-design/patterns/state-feedback.md +96 -0
- package/framework/.claude/skills/motion-design/reference/property-selection.md +95 -0
- package/framework/.claude/skills/motion-design/reference/quality-checklist.md +67 -0
- package/framework/.claude/skills/motion-design/reference/timing-easing-tables.md +106 -0
- package/framework/.claude/skills/motion-design/reference/troubleshooting.md +73 -0
- package/framework/.claude/skills/new/SKILL.md +1687 -0
- package/framework/.claude/skills/playwright-skill/API_REFERENCE.md +652 -0
- package/framework/.claude/skills/playwright-skill/SKILL.md +157 -0
- package/framework/.claude/skills/playwright-skill/package.json +26 -0
- package/framework/.claude/skills/prd/SKILL.md +228 -0
- package/framework/.claude/skills/prd/assets/card-template.yml +232 -0
- package/framework/.claude/skills/prd/assets/epic-template.yml +190 -0
- package/framework/.claude/skills/prd/assets/prd-template.md +230 -0
- package/framework/.claude/skills/prd/assets/state-template.md +78 -0
- package/framework/.claude/skills/prd/references/api-perf-gate.md +152 -0
- package/framework/.claude/skills/prd/references/audit-phase.md +478 -0
- package/framework/.claude/skills/prd/references/backlog-phase.md +145 -0
- package/framework/.claude/skills/prd/references/discovery-phase.md +359 -0
- package/framework/.claude/skills/prd/references/impact-analysis.md +233 -0
- package/framework/.claude/skills/prd/references/prd-add-phase.md +214 -0
- package/framework/.claude/skills/prd/references/prd-writing-phase.md +145 -0
- package/framework/.claude/skills/prd/references/research-phase.md +216 -0
- package/framework/.claude/skills/prd/references/ui-design-phase.md +61 -0
- package/framework/.claude/skills/prd/references/validation-phase.md +72 -0
- package/framework/.claude/skills/prd-add/SKILL.md +222 -0
- package/framework/.claude/skills/prd-add/references/impact-analysis.md +233 -0
- package/framework/.claude/skills/remotion-best-practices/SKILL.md +48 -0
- package/framework/.claude/skills/remotion-best-practices/rules/3d.md +86 -0
- package/framework/.claude/skills/remotion-best-practices/rules/animations.md +29 -0
- package/framework/.claude/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/framework/.claude/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/framework/.claude/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/framework/.claude/skills/remotion-best-practices/rules/assets.md +78 -0
- package/framework/.claude/skills/remotion-best-practices/rules/audio.md +169 -0
- package/framework/.claude/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
- package/framework/.claude/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/framework/.claude/skills/remotion-best-practices/rules/charts.md +58 -0
- package/framework/.claude/skills/remotion-best-practices/rules/compositions.md +141 -0
- package/framework/.claude/skills/remotion-best-practices/rules/display-captions.md +184 -0
- package/framework/.claude/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/framework/.claude/skills/remotion-best-practices/rules/fonts.md +152 -0
- package/framework/.claude/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/framework/.claude/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/framework/.claude/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/framework/.claude/skills/remotion-best-practices/rules/gifs.md +141 -0
- package/framework/.claude/skills/remotion-best-practices/rules/images.md +130 -0
- package/framework/.claude/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
- package/framework/.claude/skills/remotion-best-practices/rules/light-leaks.md +73 -0
- package/framework/.claude/skills/remotion-best-practices/rules/lottie.md +67 -0
- package/framework/.claude/skills/remotion-best-practices/rules/maps.md +401 -0
- package/framework/.claude/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/framework/.claude/skills/remotion-best-practices/rules/measuring-text.md +143 -0
- package/framework/.claude/skills/remotion-best-practices/rules/parameters.md +98 -0
- package/framework/.claude/skills/remotion-best-practices/rules/sequencing.md +118 -0
- package/framework/.claude/skills/remotion-best-practices/rules/subtitles.md +36 -0
- package/framework/.claude/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/framework/.claude/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/framework/.claude/skills/remotion-best-practices/rules/timing.md +179 -0
- package/framework/.claude/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
- package/framework/.claude/skills/remotion-best-practices/rules/transitions.md +197 -0
- package/framework/.claude/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/framework/.claude/skills/remotion-best-practices/rules/trimming.md +52 -0
- package/framework/.claude/skills/remotion-best-practices/rules/videos.md +171 -0
- package/framework/.claude/skills/seo-audit/SKILL.md +394 -0
- package/framework/.claude/skills/seo-audit/references/aeo-geo-patterns.md +279 -0
- package/framework/.claude/skills/seo-audit/references/ai-writing-detection.md +190 -0
- package/framework/.claude/skills/simplify/SKILL.md +137 -0
- package/framework/.claude/skills/skill-creator/LICENSE.txt +202 -0
- package/framework/.claude/skills/skill-creator/SKILL.md +356 -0
- package/framework/.claude/skills/skill-creator/references/output-patterns.md +82 -0
- package/framework/.claude/skills/skill-creator/references/workflows.md +28 -0
- package/framework/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
- package/framework/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/framework/.claude/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/framework/.claude/skills/ui-design/SKILL.md +199 -0
- package/framework/.claude/skills/ui-design/references/component-discovery.md +54 -0
- package/framework/.claude/skills/ui-design/references/evaluation.md +171 -0
- package/framework/.claude/skills/ui-design/references/generation.md +109 -0
- package/framework/.claude/skills/ui-design/references/inventory.md +59 -0
- package/framework/.claude/skills/webapp-testing/LICENSE.txt +202 -0
- package/framework/.claude/skills/webapp-testing/SKILL.md +123 -0
- package/framework/.claude/skills/webapp-testing/examples/console_logging.py +35 -0
- package/framework/.claude/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/framework/.claude/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/framework/.claude/skills/webapp-testing/scripts/with_server.py +106 -0
- package/framework/.claude/skills/worktree-manager/SKILL.md +680 -0
- package/framework/AGENTS.md +240 -0
- package/framework/agents/api-contracts.md +137 -0
- package/framework/agents/architecture.md +145 -0
- package/framework/agents/coding-standards.md +148 -0
- package/framework/agents/data-model.md +110 -0
- package/framework/agents/deployment-protocol.md +232 -0
- package/framework/agents/design-review.md +172 -0
- package/framework/agents/env-reference.md +171 -0
- package/framework/agents/github-issue-subagent.md +252 -0
- package/framework/agents/index.md +261 -0
- package/framework/agents/llm-wiki-methodology.md +216 -0
- package/framework/agents/maintenance-protocol.md +305 -0
- package/framework/agents/observability.md +162 -0
- package/framework/agents/performance.md +155 -0
- package/framework/agents/project-context.md +145 -0
- package/framework/agents/runbook.md +208 -0
- package/framework/agents/security.md +168 -0
- package/framework/agents/skills-mapping.md +286 -0
- package/framework/agents/testing.md +111 -0
- package/framework/agents/workflows.md +215 -0
- package/framework/docs/PROJECT-CONFIGURATION.md +336 -0
- package/framework/docs/references/brand-guidelines.md +170 -0
- package/framework/docs/references/ui-guidelines.template.md +182 -0
- package/framework/routines/code-review.routine.yml +46 -0
- package/framework/routines/doc-review.routine.yml +45 -0
- package/framework/routines/ds-drift.routine.yml +52 -0
- package/framework/routines/full-sweep.routine.yml +51 -0
- package/framework/routines/index.yml +70 -0
- package/framework/routines/skill-improve.routine.yml +50 -0
- package/framework/routines/wiki-review.routine.yml +45 -0
- package/framework/templates/baldart.config.template.yml +113 -0
- package/framework/templates/breaking-change-checklist.md +484 -0
- package/framework/templates/feature-card.template.yml +125 -0
- package/framework/templates/overlays/README.md +44 -0
- package/framework/templates/overlays/copywriting.fidelity-example.md +62 -0
- package/framework/templates/overlays/ui-design.fidelity-example.md +75 -0
- package/framework/templates/skill-project-context.snippet.md +19 -0
- package/framework/templates/spec.template.md +208 -0
- package/package.json +51 -0
- package/src/commands/add.js +229 -0
- package/src/commands/configure.js +385 -0
- package/src/commands/doctor.js +486 -0
- package/src/commands/migrate.js +185 -0
- package/src/commands/push.js +0 -0
- package/src/commands/routines.js +269 -0
- package/src/commands/status.js +130 -0
- package/src/commands/update.js +419 -0
- package/src/commands/version.js +88 -0
- package/src/utils/contamination.js +400 -0
- package/src/utils/git.js +181 -0
- package/src/utils/hooks.js +152 -0
- package/src/utils/routine-adapters/claude-code-cloud.js +78 -0
- package/src/utils/routine-adapters/cron.js +138 -0
- package/src/utils/routine-adapters/github-actions.js +141 -0
- package/src/utils/routine-adapters/index.js +21 -0
- package/src/utils/routines.js +166 -0
- package/src/utils/state.js +143 -0
- package/src/utils/symlinks.js +425 -0
- 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
|