compact-agent 1.1.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.
- package/README.md +394 -0
- package/bin/anycode.js +2 -0
- package/bin/crowcoder.js +19 -0
- package/bin/ecc-hooks.cjs +138 -0
- package/dist/agents.d.ts +17 -0
- package/dist/agents.js +1603 -0
- package/dist/agents.js.map +1 -0
- package/dist/api.d.ts +16 -0
- package/dist/api.js +115 -0
- package/dist/api.js.map +1 -0
- package/dist/autonomous-loops.d.ts +108 -0
- package/dist/autonomous-loops.js +526 -0
- package/dist/autonomous-loops.js.map +1 -0
- package/dist/codemaps.d.ts +53 -0
- package/dist/codemaps.js +325 -0
- package/dist/codemaps.js.map +1 -0
- package/dist/compaction.d.ts +30 -0
- package/dist/compaction.js +125 -0
- package/dist/compaction.js.map +1 -0
- package/dist/config.d.ts +5 -0
- package/dist/config.js +79 -0
- package/dist/config.js.map +1 -0
- package/dist/content-engine.d.ts +97 -0
- package/dist/content-engine.js +721 -0
- package/dist/content-engine.js.map +1 -0
- package/dist/cost-tracker.d.ts +49 -0
- package/dist/cost-tracker.js +150 -0
- package/dist/cost-tracker.js.map +1 -0
- package/dist/counter-button.d.ts +35 -0
- package/dist/counter-button.js +48 -0
- package/dist/counter-button.js.map +1 -0
- package/dist/counter.d.ts +21 -0
- package/dist/counter.js +31 -0
- package/dist/counter.js.map +1 -0
- package/dist/coverage.d.ts +23 -0
- package/dist/coverage.js +215 -0
- package/dist/coverage.js.map +1 -0
- package/dist/docs-sync.d.ts +23 -0
- package/dist/docs-sync.js +266 -0
- package/dist/docs-sync.js.map +1 -0
- package/dist/ecc.d.ts +41 -0
- package/dist/ecc.js +644 -0
- package/dist/ecc.js.map +1 -0
- package/dist/evaluation.d.ts +24 -0
- package/dist/evaluation.js +412 -0
- package/dist/evaluation.js.map +1 -0
- package/dist/export.d.ts +22 -0
- package/dist/export.js +109 -0
- package/dist/export.js.map +1 -0
- package/dist/git-workflow.d.ts +22 -0
- package/dist/git-workflow.js +197 -0
- package/dist/git-workflow.js.map +1 -0
- package/dist/hook-controls.d.ts +34 -0
- package/dist/hook-controls.js +90 -0
- package/dist/hook-controls.js.map +1 -0
- package/dist/hooks.d.ts +30 -0
- package/dist/hooks.js +130 -0
- package/dist/hooks.js.map +1 -0
- package/dist/html-parser.d.ts +18 -0
- package/dist/html-parser.js +101 -0
- package/dist/html-parser.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +1230 -0
- package/dist/index.js.map +1 -0
- package/dist/learning.d.ts +35 -0
- package/dist/learning.js +238 -0
- package/dist/learning.js.map +1 -0
- package/dist/login.d.ts +37 -0
- package/dist/login.js +191 -0
- package/dist/login.js.map +1 -0
- package/dist/memory.d.ts +39 -0
- package/dist/memory.js +183 -0
- package/dist/memory.js.map +1 -0
- package/dist/model-router.d.ts +23 -0
- package/dist/model-router.js +145 -0
- package/dist/model-router.js.map +1 -0
- package/dist/modes.d.ts +17 -0
- package/dist/modes.js +217 -0
- package/dist/modes.js.map +1 -0
- package/dist/orchestration.d.ts +37 -0
- package/dist/orchestration.js +139 -0
- package/dist/orchestration.js.map +1 -0
- package/dist/package-detect.d.ts +36 -0
- package/dist/package-detect.js +529 -0
- package/dist/package-detect.js.map +1 -0
- package/dist/permissions.d.ts +25 -0
- package/dist/permissions.js +50 -0
- package/dist/permissions.js.map +1 -0
- package/dist/pm2-manager.d.ts +40 -0
- package/dist/pm2-manager.js +127 -0
- package/dist/pm2-manager.js.map +1 -0
- package/dist/query.d.ts +15 -0
- package/dist/query.js +278 -0
- package/dist/query.js.map +1 -0
- package/dist/refactor.d.ts +22 -0
- package/dist/refactor.js +226 -0
- package/dist/refactor.js.map +1 -0
- package/dist/retry.d.ts +20 -0
- package/dist/retry.js +88 -0
- package/dist/retry.js.map +1 -0
- package/dist/rules.d.ts +34 -0
- package/dist/rules.js +942 -0
- package/dist/rules.js.map +1 -0
- package/dist/schema.d.ts +23 -0
- package/dist/schema.js +12 -0
- package/dist/schema.js.map +1 -0
- package/dist/search-first.d.ts +17 -0
- package/dist/search-first.js +301 -0
- package/dist/search-first.js.map +1 -0
- package/dist/security.d.ts +10 -0
- package/dist/security.js +145 -0
- package/dist/security.js.map +1 -0
- package/dist/sessions.d.ts +21 -0
- package/dist/sessions.js +112 -0
- package/dist/sessions.js.map +1 -0
- package/dist/skill-create.d.ts +38 -0
- package/dist/skill-create.js +389 -0
- package/dist/skill-create.js.map +1 -0
- package/dist/skills.d.ts +34 -0
- package/dist/skills.js +161 -0
- package/dist/skills.js.map +1 -0
- package/dist/strategic-compaction.d.ts +24 -0
- package/dist/strategic-compaction.js +144 -0
- package/dist/strategic-compaction.js.map +1 -0
- package/dist/system-prompt.d.ts +3 -0
- package/dist/system-prompt.js +101 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/theme.d.ts +60 -0
- package/dist/theme.js +220 -0
- package/dist/theme.js.map +1 -0
- package/dist/tools/bash.d.ts +2 -0
- package/dist/tools/bash.js +49 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.d.ts +2 -0
- package/dist/tools/edit.js +76 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +2 -0
- package/dist/tools/glob.js +54 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +2 -0
- package/dist/tools/grep.js +64 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.js +27 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-dir.d.ts +2 -0
- package/dist/tools/list-dir.js +51 -0
- package/dist/tools/list-dir.js.map +1 -0
- package/dist/tools/read.d.ts +2 -0
- package/dist/tools/read.js +56 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/types.d.ts +45 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +2 -0
- package/dist/tools/web-fetch.js +41 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +27 -0
- package/dist/tools/web-search.js +139 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/write.d.ts +2 -0
- package/dist/tools/write.js +36 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types.d.ts +28 -0
- package/dist/types.js +57 -0
- package/dist/types.js.map +1 -0
- package/dist/users.d.ts +51 -0
- package/dist/users.js +193 -0
- package/dist/users.js.map +1 -0
- package/dist/verification.d.ts +73 -0
- package/dist/verification.js +269 -0
- package/dist/verification.js.map +1 -0
- package/dist/walkthrough.d.ts +10 -0
- package/dist/walkthrough.js +121 -0
- package/dist/walkthrough.js.map +1 -0
- package/package.json +58 -0
- package/resources/ecc/agents/architect.json +16 -0
- package/resources/ecc/agents/architect.md +212 -0
- package/resources/ecc/agents/build-error-resolver.json +17 -0
- package/resources/ecc/agents/build-error-resolver.md +116 -0
- package/resources/ecc/agents/chief-of-staff.json +17 -0
- package/resources/ecc/agents/chief-of-staff.md +153 -0
- package/resources/ecc/agents/code-reviewer.json +16 -0
- package/resources/ecc/agents/code-reviewer.md +238 -0
- package/resources/ecc/agents/database-reviewer.json +16 -0
- package/resources/ecc/agents/database-reviewer.md +92 -0
- package/resources/ecc/agents/doc-updater.json +16 -0
- package/resources/ecc/agents/doc-updater.md +108 -0
- package/resources/ecc/agents/e2e-runner.json +17 -0
- package/resources/ecc/agents/e2e-runner.md +109 -0
- package/resources/ecc/agents/go-build-resolver.json +17 -0
- package/resources/ecc/agents/go-build-resolver.md +96 -0
- package/resources/ecc/agents/go-reviewer.json +16 -0
- package/resources/ecc/agents/go-reviewer.md +77 -0
- package/resources/ecc/agents/harness-optimizer.json +15 -0
- package/resources/ecc/agents/harness-optimizer.md +34 -0
- package/resources/ecc/agents/loop-operator.json +16 -0
- package/resources/ecc/agents/loop-operator.md +36 -0
- package/resources/ecc/agents/planner.json +15 -0
- package/resources/ecc/agents/planner.md +212 -0
- package/resources/ecc/agents/python-reviewer.json +16 -0
- package/resources/ecc/agents/python-reviewer.md +99 -0
- package/resources/ecc/agents/refactor-cleaner.json +17 -0
- package/resources/ecc/agents/refactor-cleaner.md +87 -0
- package/resources/ecc/agents/security-reviewer.json +16 -0
- package/resources/ecc/agents/security-reviewer.md +109 -0
- package/resources/ecc/agents/tdd-guide.json +17 -0
- package/resources/ecc/agents/tdd-guide.md +93 -0
- package/resources/ecc/commands/add-language-rules.md +39 -0
- package/resources/ecc/commands/database-migration.md +36 -0
- package/resources/ecc/commands/feature-development.md +38 -0
- package/resources/ecc/prompts/build-fix.prompt.md +47 -0
- package/resources/ecc/prompts/code-review.prompt.md +56 -0
- package/resources/ecc/prompts/plan.prompt.md +52 -0
- package/resources/ecc/prompts/refactor.prompt.md +50 -0
- package/resources/ecc/prompts/security-review.prompt.md +70 -0
- package/resources/ecc/prompts/tdd.prompt.md +47 -0
- package/resources/ecc/rules/common-agents.md +53 -0
- package/resources/ecc/rules/common-coding-style.md +52 -0
- package/resources/ecc/rules/common-development-workflow.md +33 -0
- package/resources/ecc/rules/common-git-workflow.md +28 -0
- package/resources/ecc/rules/common-hooks.md +34 -0
- package/resources/ecc/rules/common-patterns.md +35 -0
- package/resources/ecc/rules/common-performance.md +59 -0
- package/resources/ecc/rules/common-security.md +33 -0
- package/resources/ecc/rules/common-testing.md +33 -0
- package/resources/ecc/rules/golang-coding-style.md +31 -0
- package/resources/ecc/rules/golang-hooks.md +16 -0
- package/resources/ecc/rules/golang-patterns.md +44 -0
- package/resources/ecc/rules/golang-security.md +33 -0
- package/resources/ecc/rules/golang-testing.md +30 -0
- package/resources/ecc/rules/kotlin-coding-style.md +39 -0
- package/resources/ecc/rules/kotlin-hooks.md +16 -0
- package/resources/ecc/rules/kotlin-patterns.md +50 -0
- package/resources/ecc/rules/kotlin-security.md +58 -0
- package/resources/ecc/rules/kotlin-testing.md +38 -0
- package/resources/ecc/rules/php-coding-style.md +25 -0
- package/resources/ecc/rules/php-hooks.md +21 -0
- package/resources/ecc/rules/php-patterns.md +23 -0
- package/resources/ecc/rules/php-security.md +24 -0
- package/resources/ecc/rules/php-testing.md +26 -0
- package/resources/ecc/rules/python-coding-style.md +42 -0
- package/resources/ecc/rules/python-hooks.md +19 -0
- package/resources/ecc/rules/python-patterns.md +39 -0
- package/resources/ecc/rules/python-security.md +30 -0
- package/resources/ecc/rules/python-testing.md +38 -0
- package/resources/ecc/rules/swift-coding-style.md +47 -0
- package/resources/ecc/rules/swift-hooks.md +20 -0
- package/resources/ecc/rules/swift-patterns.md +66 -0
- package/resources/ecc/rules/swift-security.md +33 -0
- package/resources/ecc/rules/swift-testing.md +45 -0
- package/resources/ecc/rules/typescript-coding-style.md +63 -0
- package/resources/ecc/rules/typescript-hooks.md +20 -0
- package/resources/ecc/rules/typescript-patterns.md +50 -0
- package/resources/ecc/rules/typescript-security.md +26 -0
- package/resources/ecc/rules/typescript-testing.md +16 -0
- package/resources/ecc/skills/agent-introspection-debugging/SKILL.md +152 -0
- package/resources/ecc/skills/agent-introspection-debugging/agents/openai.yaml +7 -0
- package/resources/ecc/skills/agent-sort/SKILL.md +214 -0
- package/resources/ecc/skills/agent-sort/agents/openai.yaml +7 -0
- package/resources/ecc/skills/api-design/SKILL.md +522 -0
- package/resources/ecc/skills/api-design/agents/openai.yaml +7 -0
- package/resources/ecc/skills/article-writing/SKILL.md +78 -0
- package/resources/ecc/skills/article-writing/agents/openai.yaml +7 -0
- package/resources/ecc/skills/backend-patterns/SKILL.md +597 -0
- package/resources/ecc/skills/backend-patterns/agents/openai.yaml +7 -0
- package/resources/ecc/skills/brand-voice/SKILL.md +96 -0
- package/resources/ecc/skills/brand-voice/agents/openai.yaml +7 -0
- package/resources/ecc/skills/brand-voice/references/voice-profile-schema.md +55 -0
- package/resources/ecc/skills/bun-runtime/SKILL.md +83 -0
- package/resources/ecc/skills/bun-runtime/agents/openai.yaml +7 -0
- package/resources/ecc/skills/coding-standards/SKILL.md +548 -0
- package/resources/ecc/skills/coding-standards/agents/openai.yaml +7 -0
- package/resources/ecc/skills/content-engine/SKILL.md +130 -0
- package/resources/ecc/skills/content-engine/agents/openai.yaml +7 -0
- package/resources/ecc/skills/crosspost/SKILL.md +110 -0
- package/resources/ecc/skills/crosspost/agents/openai.yaml +7 -0
- package/resources/ecc/skills/deep-research/SKILL.md +154 -0
- package/resources/ecc/skills/deep-research/agents/openai.yaml +7 -0
- package/resources/ecc/skills/dmux-workflows/SKILL.md +143 -0
- package/resources/ecc/skills/dmux-workflows/agents/openai.yaml +7 -0
- package/resources/ecc/skills/documentation-lookup/SKILL.md +89 -0
- package/resources/ecc/skills/documentation-lookup/agents/openai.yaml +7 -0
- package/resources/ecc/skills/e2e-testing/SKILL.md +325 -0
- package/resources/ecc/skills/e2e-testing/agents/openai.yaml +7 -0
- package/resources/ecc/skills/eval-harness/SKILL.md +235 -0
- package/resources/ecc/skills/eval-harness/agents/openai.yaml +7 -0
- package/resources/ecc/skills/everything-claude-code/SKILL.md +442 -0
- package/resources/ecc/skills/everything-claude-code/agents/openai.yaml +7 -0
- package/resources/ecc/skills/exa-search/SKILL.md +169 -0
- package/resources/ecc/skills/exa-search/agents/openai.yaml +7 -0
- package/resources/ecc/skills/fal-ai-media/SKILL.md +276 -0
- package/resources/ecc/skills/fal-ai-media/agents/openai.yaml +7 -0
- package/resources/ecc/skills/frontend-patterns/SKILL.md +647 -0
- package/resources/ecc/skills/frontend-patterns/agents/openai.yaml +7 -0
- package/resources/ecc/skills/frontend-slides/SKILL.md +183 -0
- package/resources/ecc/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/resources/ecc/skills/frontend-slides/agents/openai.yaml +7 -0
- package/resources/ecc/skills/investor-materials/SKILL.md +95 -0
- package/resources/ecc/skills/investor-materials/agents/openai.yaml +7 -0
- package/resources/ecc/skills/investor-outreach/SKILL.md +90 -0
- package/resources/ecc/skills/investor-outreach/agents/openai.yaml +7 -0
- package/resources/ecc/skills/market-research/SKILL.md +74 -0
- package/resources/ecc/skills/market-research/agents/openai.yaml +7 -0
- package/resources/ecc/skills/mcp-server-patterns/SKILL.md +66 -0
- package/resources/ecc/skills/mcp-server-patterns/agents/openai.yaml +7 -0
- package/resources/ecc/skills/mle-workflow/SKILL.md +346 -0
- package/resources/ecc/skills/mle-workflow/agents/openai.yaml +7 -0
- package/resources/ecc/skills/nextjs-turbopack/SKILL.md +43 -0
- package/resources/ecc/skills/nextjs-turbopack/agents/openai.yaml +7 -0
- package/resources/ecc/skills/product-capability/SKILL.md +140 -0
- package/resources/ecc/skills/product-capability/agents/openai.yaml +7 -0
- package/resources/ecc/skills/security-review/SKILL.md +494 -0
- package/resources/ecc/skills/security-review/agents/openai.yaml +7 -0
- package/resources/ecc/skills/strategic-compact/SKILL.md +102 -0
- package/resources/ecc/skills/strategic-compact/agents/openai.yaml +7 -0
- package/resources/ecc/skills/tdd-workflow/SKILL.md +409 -0
- package/resources/ecc/skills/tdd-workflow/agents/openai.yaml +7 -0
- package/resources/ecc/skills/verification-loop/SKILL.md +125 -0
- package/resources/ecc/skills/verification-loop/agents/openai.yaml +7 -0
- package/resources/ecc/skills/video-editing/SKILL.md +307 -0
- package/resources/ecc/skills/video-editing/agents/openai.yaml +7 -0
- package/resources/ecc/skills/x-api/SKILL.md +229 -0
- package/resources/ecc/skills/x-api/agents/openai.yaml +7 -0
|
@@ -0,0 +1,721 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Engine — content creation and business skills system.
|
|
3
|
+
* Inspired by everything-claude-code's article-writing, content-engine,
|
|
4
|
+
* market-research, and investor-materials skills.
|
|
5
|
+
*
|
|
6
|
+
* Provides prompt builders for:
|
|
7
|
+
* - Article writing with voice preservation
|
|
8
|
+
* - Content repurposing across platforms
|
|
9
|
+
* - Slide deck generation
|
|
10
|
+
* - Market research with source attribution
|
|
11
|
+
* - Investor pitch decks and outreach
|
|
12
|
+
* - Code quality enforcement
|
|
13
|
+
* - Skill audits
|
|
14
|
+
* - Chief of staff communication triage
|
|
15
|
+
*/
|
|
16
|
+
// ── Content Creation ──────────────────────────────────────
|
|
17
|
+
/**
|
|
18
|
+
* Build a detailed article prompt for long-form writing.
|
|
19
|
+
* Includes SEO structure, voice preservation, and reader engagement tactics.
|
|
20
|
+
*
|
|
21
|
+
* @param topic — The article topic/headline
|
|
22
|
+
* @param options — Optional: voice style, target length, audience
|
|
23
|
+
* @returns Complete article-writing prompt
|
|
24
|
+
*/
|
|
25
|
+
export function buildArticlePrompt(topic, options) {
|
|
26
|
+
const voice = options?.voice ?? 'expert, accessible, engaging';
|
|
27
|
+
const length = options?.length ?? 'medium';
|
|
28
|
+
const audience = options?.audience ?? 'general professional readers';
|
|
29
|
+
const wordTargets = {
|
|
30
|
+
short: { min: 500, max: 1000 },
|
|
31
|
+
medium: { min: 1500, max: 2500 },
|
|
32
|
+
long: { min: 2500, max: 4000 },
|
|
33
|
+
};
|
|
34
|
+
const target = wordTargets[length];
|
|
35
|
+
return `
|
|
36
|
+
Write a long-form article on: "${topic}"
|
|
37
|
+
|
|
38
|
+
## Output Requirements
|
|
39
|
+
- **Word count:** ${target.min}–${target.max} words
|
|
40
|
+
- **Format:** Markdown with proper heading hierarchy (H1, H2, H3)
|
|
41
|
+
- **Audience:** ${audience}
|
|
42
|
+
- **Tone/Voice:** ${voice}
|
|
43
|
+
|
|
44
|
+
## Structure (Use this outline)
|
|
45
|
+
1. **Introduction** (100–150 words)
|
|
46
|
+
- Hook: Open with a compelling question, insight, or stat
|
|
47
|
+
- Context: Explain why this topic matters now
|
|
48
|
+
- Thesis: State the article's core argument or promise
|
|
49
|
+
- Roadmap: Preview the 3–5 main sections
|
|
50
|
+
|
|
51
|
+
2. **Body Sections** (3–5 sections)
|
|
52
|
+
- Each section: 200–400 words
|
|
53
|
+
- Lead with a clear subheading that answers a reader question
|
|
54
|
+
- Open with a topic sentence or mini-story
|
|
55
|
+
- Support claims with data, examples, or expert quotes
|
|
56
|
+
- Close with a takeaway or transition to the next idea
|
|
57
|
+
- Use short paragraphs (2–3 sentences) for scannability
|
|
58
|
+
|
|
59
|
+
3. **Practical Examples or Case Studies** (if applicable)
|
|
60
|
+
- Real-world application or proof point
|
|
61
|
+
- Show, don't tell: use concrete details
|
|
62
|
+
- Extract a key lesson
|
|
63
|
+
|
|
64
|
+
4. **Conclusion** (100–150 words)
|
|
65
|
+
- Restate the thesis in fresh language
|
|
66
|
+
- Summarize the 3 biggest takeaways
|
|
67
|
+
- End with a forward-looking statement or call to action
|
|
68
|
+
- Optionally: pose a question for reader reflection
|
|
69
|
+
|
|
70
|
+
## SEO & Engagement
|
|
71
|
+
- Include 2–3 subheadings that match likely search queries
|
|
72
|
+
- Use active voice and strong verbs
|
|
73
|
+
- Break up text with bullet points or short lists where appropriate
|
|
74
|
+
- Aim for 60–70 Flesch Reading Ease (accessible to educated readers)
|
|
75
|
+
- Include at least one memorable quote, stat, or analogy
|
|
76
|
+
- Vary sentence length to maintain rhythm
|
|
77
|
+
|
|
78
|
+
## Quality Checklist
|
|
79
|
+
- [ ] Fact-checked claims (link to sources if available)
|
|
80
|
+
- [ ] No jargon without explanation
|
|
81
|
+
- [ ] Consistent terminology throughout
|
|
82
|
+
- [ ] Specific details rather than vague generalities
|
|
83
|
+
- [ ] Strong opening and closing
|
|
84
|
+
- [ ] Reader can apply insights immediately
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
**Begin the article below. Use Markdown. Do not include a title — start with H2 headings for sections.**
|
|
88
|
+
`;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Build a prompt to repurpose a single piece of content across multiple platforms.
|
|
92
|
+
* Adapts tone, length, and format for Twitter/X, LinkedIn, blog, email, Reddit, etc.
|
|
93
|
+
*
|
|
94
|
+
* @param content — Original content to repurpose
|
|
95
|
+
* @param platforms — List of target platforms (e.g., ["twitter", "linkedin", "email"])
|
|
96
|
+
* @returns Repurposing prompt with platform-specific guidance
|
|
97
|
+
*/
|
|
98
|
+
export function buildContentRepurposePrompt(content, platforms) {
|
|
99
|
+
const platformGuides = {
|
|
100
|
+
twitter: {
|
|
101
|
+
maxLength: 280,
|
|
102
|
+
tone: 'punchy, conversational, hook-first',
|
|
103
|
+
format: 'Single tweet or thread (up to 10 tweets)',
|
|
104
|
+
},
|
|
105
|
+
x: {
|
|
106
|
+
maxLength: 300,
|
|
107
|
+
tone: 'witty, thought-provoking, debate-ready',
|
|
108
|
+
format: 'Thread or standalone post',
|
|
109
|
+
},
|
|
110
|
+
linkedin: {
|
|
111
|
+
maxLength: 1300,
|
|
112
|
+
tone: 'professional, narrative-driven, insight-focused',
|
|
113
|
+
format: 'Post with optional carousel or document',
|
|
114
|
+
},
|
|
115
|
+
blog: {
|
|
116
|
+
maxLength: 2000,
|
|
117
|
+
tone: 'educational, detailed, link-rich',
|
|
118
|
+
format: 'Blog post excerpt (300–800 words)',
|
|
119
|
+
},
|
|
120
|
+
email: {
|
|
121
|
+
maxLength: 500,
|
|
122
|
+
tone: 'personal, benefit-driven, action-oriented',
|
|
123
|
+
format: 'Email body (no subject) with clear CTA',
|
|
124
|
+
},
|
|
125
|
+
reddit: {
|
|
126
|
+
maxLength: 800,
|
|
127
|
+
tone: 'authentic, conversational, community-aware',
|
|
128
|
+
format: 'Post or comment thread response',
|
|
129
|
+
},
|
|
130
|
+
newsletter: {
|
|
131
|
+
maxLength: 1000,
|
|
132
|
+
tone: 'curated, editorial, compelling',
|
|
133
|
+
format: 'Newsletter section or standalone item',
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
const platformsList = platforms
|
|
137
|
+
.map(p => {
|
|
138
|
+
const guide = platformGuides[p.toLowerCase()] || {
|
|
139
|
+
maxLength: 500,
|
|
140
|
+
tone: 'professional',
|
|
141
|
+
format: 'standard format',
|
|
142
|
+
};
|
|
143
|
+
return `
|
|
144
|
+
**${p.toUpperCase()}**
|
|
145
|
+
- Max length: ${guide.maxLength} characters
|
|
146
|
+
- Tone: ${guide.tone}
|
|
147
|
+
- Format: ${guide.format}
|
|
148
|
+
`;
|
|
149
|
+
})
|
|
150
|
+
.join('\n');
|
|
151
|
+
return `
|
|
152
|
+
Repurpose the following content for multiple platforms.
|
|
153
|
+
|
|
154
|
+
## Original Content
|
|
155
|
+
\`\`\`
|
|
156
|
+
${content}
|
|
157
|
+
\`\`\`
|
|
158
|
+
|
|
159
|
+
## Target Platforms & Requirements
|
|
160
|
+
${platformsList}
|
|
161
|
+
|
|
162
|
+
## Key Instructions
|
|
163
|
+
1. **Extract the core insight** — Identify the most valuable, shareable takeaway
|
|
164
|
+
2. **Adapt voice** — Match each platform's culture and audience expectations
|
|
165
|
+
3. **Reformat for platform constraints** — Respect character/length limits
|
|
166
|
+
4. **Optimize for discoverability** — Use platform-native features (hashtags on Twitter/LinkedIn, questions on Reddit, hooks in email subject)
|
|
167
|
+
5. **Preserve credibility** — Keep claims accurate; add context where needed
|
|
168
|
+
6. **Include CTAs** — Where appropriate, link back to full content or suggest next action
|
|
169
|
+
|
|
170
|
+
## Output Format
|
|
171
|
+
For each platform, provide:
|
|
172
|
+
- Platform name
|
|
173
|
+
- Adapted copy (full text)
|
|
174
|
+
- Any suggested hashtags, tags, or metadata
|
|
175
|
+
- Brief note on why this version works for that platform
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
**Begin below.**
|
|
179
|
+
`;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Build a prompt to generate HTML slide deck content.
|
|
183
|
+
* Useful for pitch decks, presentations, or educational materials.
|
|
184
|
+
*
|
|
185
|
+
* @param topic — Presentation topic
|
|
186
|
+
* @param slideCount — Number of slides (default: 10)
|
|
187
|
+
* @returns Slide-generation prompt
|
|
188
|
+
*/
|
|
189
|
+
export function buildSlidePrompt(topic, slideCount = 10) {
|
|
190
|
+
return `
|
|
191
|
+
Generate an HTML slide deck presentation on: "${topic}"
|
|
192
|
+
|
|
193
|
+
## Specifications
|
|
194
|
+
- Total slides: ${slideCount}
|
|
195
|
+
- Format: Self-contained HTML file with embedded CSS and JavaScript
|
|
196
|
+
- Styling: Modern, clean, readable; use a consistent color scheme
|
|
197
|
+
- Navigation: Arrow keys or on-screen buttons to advance slides
|
|
198
|
+
- Include a title slide, content slides, and a closing slide
|
|
199
|
+
|
|
200
|
+
## Slide Structure (adjust as needed)
|
|
201
|
+
1. **Title Slide** — Topic, date, optionally author/company
|
|
202
|
+
2. **Agenda or Overview** — What the presentation covers
|
|
203
|
+
3–${slideCount - 2}. **Content Slides** — Main topics, ideas, examples, data
|
|
204
|
+
${slideCount}. **Closing Slide** — Summary, call to action, contact info
|
|
205
|
+
|
|
206
|
+
## Design Guidelines
|
|
207
|
+
- **Typography:** Use a readable sans-serif font (Helvetica, Arial, or system sans)
|
|
208
|
+
- **Colors:** Limit to 2–3 primary colors + white/dark backgrounds
|
|
209
|
+
- **Images/Icons:** Use only if needed; keep visual clutter minimal
|
|
210
|
+
- **Text:** Keep bullet points to 3–5 lines per slide; use short, punchy phrases
|
|
211
|
+
- **Data:** Use charts or simple visuals for complex information
|
|
212
|
+
- **Contrast:** Ensure text is legible on background (WCAG AA minimum)
|
|
213
|
+
|
|
214
|
+
## HTML Requirements
|
|
215
|
+
- Responsive design (mobile-friendly)
|
|
216
|
+
- No external dependencies (embed all CSS/JS)
|
|
217
|
+
- Include keyboard navigation (arrow keys)
|
|
218
|
+
- Slide counter (e.g., "Slide 3 of ${slideCount}")
|
|
219
|
+
- Optional: slide transition effects (fade or slide)
|
|
220
|
+
|
|
221
|
+
## Output Format
|
|
222
|
+
Return complete, ready-to-save HTML. It should be able to run in any modern browser.
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
**Begin below. Provide ONLY the HTML code, no explanation.**
|
|
226
|
+
`;
|
|
227
|
+
}
|
|
228
|
+
// ── Business & Research ───────────────────────────────────
|
|
229
|
+
/**
|
|
230
|
+
* Build a prompt for source-attributed market research.
|
|
231
|
+
* Includes competitor analysis, trends, and data points with citations.
|
|
232
|
+
*
|
|
233
|
+
* @param topic — Research topic (e.g., "AI chatbot market")
|
|
234
|
+
* @param sources — Optional list of source types to prioritize
|
|
235
|
+
* @returns Market research prompt
|
|
236
|
+
*/
|
|
237
|
+
export function buildMarketResearchPrompt(topic, sources) {
|
|
238
|
+
const sourceGuide = sources
|
|
239
|
+
? `Prioritize these sources: ${sources.join(', ')}`
|
|
240
|
+
: 'Use a mix of: industry reports, news articles, company earnings calls, analyst research, academic papers, and regulatory filings.';
|
|
241
|
+
return `
|
|
242
|
+
Conduct market research on: "${topic}"
|
|
243
|
+
|
|
244
|
+
## Research Requirements
|
|
245
|
+
1. **Market Size & Growth**
|
|
246
|
+
- Current market size (with year)
|
|
247
|
+
- YoY growth rate (last 3 years if available)
|
|
248
|
+
- Projected growth (next 3–5 years)
|
|
249
|
+
- Key geographic regions
|
|
250
|
+
|
|
251
|
+
2. **Competitive Landscape**
|
|
252
|
+
- Top 3–5 competitors: names, market share, key strengths/weaknesses
|
|
253
|
+
- Market concentration (fragmented vs. consolidated)
|
|
254
|
+
- Barriers to entry
|
|
255
|
+
- New entrants or disruptors
|
|
256
|
+
|
|
257
|
+
3. **Trends & Drivers**
|
|
258
|
+
- 3–5 major trends shaping the market
|
|
259
|
+
- Customer pain points or unmet needs
|
|
260
|
+
- Regulatory or policy changes
|
|
261
|
+
- Technological shifts
|
|
262
|
+
|
|
263
|
+
4. **Customer Segments**
|
|
264
|
+
- Primary buyers/users
|
|
265
|
+
- Customer pain points or priorities
|
|
266
|
+
- Purchasing drivers (price, features, brand, support)
|
|
267
|
+
|
|
268
|
+
5. **Distribution & Pricing**
|
|
269
|
+
- How solutions reach customers (direct, reseller, marketplace)
|
|
270
|
+
- Typical pricing models and ranges
|
|
271
|
+
- Customer acquisition costs (if known)
|
|
272
|
+
|
|
273
|
+
## Source Guidance
|
|
274
|
+
${sourceGuide}
|
|
275
|
+
|
|
276
|
+
## Output Format
|
|
277
|
+
Use this structure:
|
|
278
|
+
|
|
279
|
+
### [Section Title]
|
|
280
|
+
**Finding:** [Clear statement or data point]
|
|
281
|
+
**Source:** [Source type and credibility note, e.g., "Gartner Magic Quadrant 2024" or "Q3 2024 SEC filing"]
|
|
282
|
+
**Date:** [Publication/data date]
|
|
283
|
+
**Notes:** [Brief context or supporting detail]
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
**Critical Rule:** Every claim must be attributed. If you're uncertain about a data point, note it as "likely range" or "estimated by [source]."
|
|
288
|
+
|
|
289
|
+
**Begin below.**
|
|
290
|
+
`;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Build a prompt to create investor pitch deck content.
|
|
294
|
+
* Includes: problem, solution, market, traction, team, ask.
|
|
295
|
+
*
|
|
296
|
+
* @param company — Company name
|
|
297
|
+
* @param stage — Funding stage (e.g., "seed", "Series A", "Series B")
|
|
298
|
+
* @returns Investor deck prompt
|
|
299
|
+
*/
|
|
300
|
+
export function buildInvestorDeckPrompt(company, stage) {
|
|
301
|
+
const stageContext = stage && ['seed', 'series-a', 'series-b', 'series-c', 'growth'].includes(stage.toLowerCase())
|
|
302
|
+
? `This is a ${stage} round.`
|
|
303
|
+
: 'Stage not specified; use standard startup pitch format.';
|
|
304
|
+
return `
|
|
305
|
+
Generate an investor pitch deck outline for: "${company}"
|
|
306
|
+
|
|
307
|
+
${stageContext}
|
|
308
|
+
|
|
309
|
+
## Standard Pitch Deck Structure (12–15 slides)
|
|
310
|
+
|
|
311
|
+
1. **Title Slide**
|
|
312
|
+
- Company name, tagline, logo
|
|
313
|
+
- Founder names (optional)
|
|
314
|
+
|
|
315
|
+
2. **The Problem**
|
|
316
|
+
- Customer pain point (specific, quantified if possible)
|
|
317
|
+
- Current inefficiency or cost
|
|
318
|
+
- Who feels this pain? (target customer segment)
|
|
319
|
+
- Why now? (market conditions, urgency)
|
|
320
|
+
|
|
321
|
+
3. **The Solution**
|
|
322
|
+
- How your product/service solves the problem
|
|
323
|
+
- Unique approach or differentiation
|
|
324
|
+
- Key features or capabilities (if not obvious)
|
|
325
|
+
- Product demo or visual mockup (if applicable)
|
|
326
|
+
|
|
327
|
+
4. **Market Opportunity**
|
|
328
|
+
- Total Addressable Market (TAM)
|
|
329
|
+
- Serviceable Addressable Market (SAM)
|
|
330
|
+
- Serviceable Obtainable Market (SOM) — Year 1 target
|
|
331
|
+
- Market growth trajectory
|
|
332
|
+
|
|
333
|
+
5. **Business Model**
|
|
334
|
+
- How you make money (SaaS, marketplace, licensing, etc.)
|
|
335
|
+
- Pricing strategy
|
|
336
|
+
- Unit economics (if favorable)
|
|
337
|
+
- Customer lifetime value vs. CAC
|
|
338
|
+
|
|
339
|
+
6. **Go-to-Market Strategy**
|
|
340
|
+
- How you'll acquire customers
|
|
341
|
+
- Sales/marketing channels
|
|
342
|
+
- Partnerships or distribution deals
|
|
343
|
+
- Timeline to first revenue (if pre-revenue)
|
|
344
|
+
|
|
345
|
+
7. **Competitive Landscape**
|
|
346
|
+
- Direct and indirect competitors
|
|
347
|
+
- Your competitive advantages
|
|
348
|
+
- Market positioning (what's different?)
|
|
349
|
+
|
|
350
|
+
8. **Traction**
|
|
351
|
+
- Users, revenue, or engagement metrics
|
|
352
|
+
- Growth rate (MoM or YoY)
|
|
353
|
+
- Key milestones achieved
|
|
354
|
+
- Customer testimonials or logos (if applicable)
|
|
355
|
+
|
|
356
|
+
9. **Team**
|
|
357
|
+
- Founder/leadership backgrounds (relevant experience)
|
|
358
|
+
- Key hires or advisors
|
|
359
|
+
- Why this team can win
|
|
360
|
+
|
|
361
|
+
10. **Financials & Projections** (3-year forward)
|
|
362
|
+
- Historical revenue (if applicable)
|
|
363
|
+
- Revenue projections (conservative, realistic, optimistic)
|
|
364
|
+
- Path to profitability or key profitability milestones
|
|
365
|
+
- Burn rate and runway
|
|
366
|
+
|
|
367
|
+
11. **Use of Funds**
|
|
368
|
+
- Allocation: product, sales/marketing, operations, hiring
|
|
369
|
+
- Key hires or investments planned
|
|
370
|
+
- How this accelerates growth
|
|
371
|
+
|
|
372
|
+
12. **The Ask**
|
|
373
|
+
- Funding amount
|
|
374
|
+
- Post-money valuation (if appropriate)
|
|
375
|
+
- Investor benefits/rights
|
|
376
|
+
|
|
377
|
+
13. **Closing / Vision**
|
|
378
|
+
- Long-term vision (where is the company in 10 years?)
|
|
379
|
+
- Why this matters
|
|
380
|
+
- Call to action (discuss further, office hours, etc.)
|
|
381
|
+
|
|
382
|
+
## Content Guidelines
|
|
383
|
+
- **Problem & Solution:** Make it visceral and urgent, not abstract
|
|
384
|
+
- **Numbers:** Use realistic, defensible figures; note assumptions
|
|
385
|
+
- **Tone:** Confident but not overconfident; show you understand risks
|
|
386
|
+
- **Design Notes:** Recommend high-contrast colors, minimal text, strong visuals
|
|
387
|
+
- **Storytelling:** Lead with narrative (why does this founder care?), then data
|
|
388
|
+
|
|
389
|
+
## Investor Mindset
|
|
390
|
+
Investors ask: "Is this a real problem? Can this team solve it? Is the market big? Will they spend the money wisely? What's my return?"
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
**For each slide, provide:**
|
|
394
|
+
- **Slide Title**
|
|
395
|
+
- **Key Points** (3–5 bullet points)
|
|
396
|
+
- **Visual Recommendations** (e.g., "charts showing market growth," "team photos")
|
|
397
|
+
|
|
398
|
+
**Begin below.**
|
|
399
|
+
`;
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Build a prompt for personalized investor outreach and follow-up sequences.
|
|
403
|
+
* Creates multi-step email templates tailored to specific investors.
|
|
404
|
+
*
|
|
405
|
+
* @param investor — Investor name and firm
|
|
406
|
+
* @param company — Your company name
|
|
407
|
+
* @returns Outreach prompt with email templates
|
|
408
|
+
*/
|
|
409
|
+
export function buildInvestorOutreachPrompt(investor, company) {
|
|
410
|
+
return `
|
|
411
|
+
Create a personalized investor outreach sequence for: ${investor} at their firm, on behalf of ${company}.
|
|
412
|
+
|
|
413
|
+
## Objectives
|
|
414
|
+
1. Grab attention with a specific, credible hook
|
|
415
|
+
2. Briefly convey your value proposition
|
|
416
|
+
3. Request an initial conversation (office hours, brief call)
|
|
417
|
+
4. Follow up if no response (2–3 touch points)
|
|
418
|
+
5. Maintain professionalism and respect for their time
|
|
419
|
+
|
|
420
|
+
## Email Sequence
|
|
421
|
+
|
|
422
|
+
### Email 1: Initial Outreach
|
|
423
|
+
**Subject Line:** [Create 2 options: one reference-based, one curiosity-based]
|
|
424
|
+
**Body:**
|
|
425
|
+
- Personalization: Show you know their recent investments, thesis, or public comments
|
|
426
|
+
- Credibility: Why you're reaching out to them specifically (not form email)
|
|
427
|
+
- Hook: Lead with the biggest insight or problem your company solves
|
|
428
|
+
- Social proof: Any mutual connections, relevant credential, or early traction
|
|
429
|
+
- Clear CTA: Request 15–20 min call or office hours; link to calendar if possible
|
|
430
|
+
- Tone: Warm, respectful, brief (under 150 words in body)
|
|
431
|
+
|
|
432
|
+
### Email 2: Follow-up (5–7 days after #1, if no response)
|
|
433
|
+
**Subject Line:** [Light, not pushy; e.g., "Quick thought on [specific area]"]
|
|
434
|
+
**Body:**
|
|
435
|
+
- Acknowledge you may have missed them
|
|
436
|
+
- Add one new detail, article, or social proof not in Email 1
|
|
437
|
+
- Soften the CTA: "If you're open to a brief conversation, I'd love to share..."
|
|
438
|
+
- Keep it short (100 words)
|
|
439
|
+
|
|
440
|
+
### Email 3: Final Touch (10–14 days after #1)
|
|
441
|
+
**Subject Line:** [Ask for specific advice or specific feedback, not a meeting]
|
|
442
|
+
**Body:**
|
|
443
|
+
- Shift from "I want your money" to "I value your expertise"
|
|
444
|
+
- Ask a genuine question about their thesis, the market, or your approach
|
|
445
|
+
- Make it clear this is your last outreach attempt
|
|
446
|
+
- Leave door open: "No pressure, but always happy to connect if timing improves"
|
|
447
|
+
|
|
448
|
+
## Personalization Checklist
|
|
449
|
+
- [ ] Investor's recent investment(s) or public statement(s) mentioned
|
|
450
|
+
- [ ] Reason why *this investor specifically* is a good fit (not just a big firm)
|
|
451
|
+
- [ ] Company's unique angle or unfair advantage briefly stated
|
|
452
|
+
- [ ] One concrete metric or milestone (users, revenue, engagement)
|
|
453
|
+
- [ ] Honest, conversational tone — not salesy
|
|
454
|
+
- [ ] Calendar link or specific meeting options provided
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
**Provide the sequence below. For each email, include:**
|
|
458
|
+
- **Subject Line**
|
|
459
|
+
- **Body Text** (formatted as it would appear in email)
|
|
460
|
+
- **Brief notes** on timing and personalization cues
|
|
461
|
+
|
|
462
|
+
**Begin below.**
|
|
463
|
+
`;
|
|
464
|
+
}
|
|
465
|
+
// ── Code Quality ──────────────────────────────────────────
|
|
466
|
+
/**
|
|
467
|
+
* Build a prompt for write-time code quality enforcement.
|
|
468
|
+
* Checks naming, function length, complexity, documentation, test coverage expectations.
|
|
469
|
+
* Inspired by plankton-code-quality.
|
|
470
|
+
*
|
|
471
|
+
* @param cwd — Working directory context (used to determine language/framework)
|
|
472
|
+
* @returns Code quality prompt
|
|
473
|
+
*/
|
|
474
|
+
export function buildCodeQualityPrompt(cwd) {
|
|
475
|
+
return `
|
|
476
|
+
Review code quality for the project at: ${cwd}
|
|
477
|
+
|
|
478
|
+
## Code Quality Checklist
|
|
479
|
+
|
|
480
|
+
### 1. Naming Conventions
|
|
481
|
+
- [ ] Functions, variables, and methods use clear, intention-revealing names
|
|
482
|
+
- [ ] No single-letter variables except for loop counters (i, j, k)
|
|
483
|
+
- [ ] Class/type names are nouns; function names are verbs
|
|
484
|
+
- [ ] Avoid abbreviations unless universally understood (e.g., "id" OK, "idx" not OK)
|
|
485
|
+
- [ ] Boolean functions/variables start with "is", "has", "can", "should"
|
|
486
|
+
- [ ] Constant names use SCREAMING_SNAKE_CASE
|
|
487
|
+
- [ ] Private methods/fields prefixed with underscore (if not using access modifiers)
|
|
488
|
+
|
|
489
|
+
### 2. Function Length & Complexity
|
|
490
|
+
- [ ] Functions are short and focused (prefer <30 lines; max 50)
|
|
491
|
+
- [ ] Functions do one thing well
|
|
492
|
+
- [ ] Cyclomatic complexity <= 10 (avoid deep nesting)
|
|
493
|
+
- [ ] Early returns reduce indentation and improve readability
|
|
494
|
+
- [ ] No nested callbacks or callback hell
|
|
495
|
+
|
|
496
|
+
### 3. Comments & Documentation
|
|
497
|
+
- [ ] Public APIs (exports) have JSDoc or equivalent docstrings
|
|
498
|
+
- [ ] Complex logic has inline comments explaining the "why", not "what"
|
|
499
|
+
- [ ] No obsolete or redundant comments
|
|
500
|
+
- [ ] TODOs are dated and reference an issue/PR if possible
|
|
501
|
+
- [ ] README or file-level comments explain module purpose
|
|
502
|
+
|
|
503
|
+
### 4. Error Handling
|
|
504
|
+
- [ ] All promises are awaited or explicitly handled
|
|
505
|
+
- [ ] No silent failures (catch blocks log or throw)
|
|
506
|
+
- [ ] Errors include context (not just generic messages)
|
|
507
|
+
- [ ] Type safety: use typed errors, not generic strings
|
|
508
|
+
|
|
509
|
+
### 5. Testing Expectations
|
|
510
|
+
- [ ] Critical paths have test coverage (>80% target)
|
|
511
|
+
- [ ] Tests are descriptive: test names explain the scenario
|
|
512
|
+
- [ ] Tests are isolated (no shared state between tests)
|
|
513
|
+
- [ ] Edge cases are covered (empty input, null, boundary values)
|
|
514
|
+
- [ ] No test-only code in production
|
|
515
|
+
|
|
516
|
+
### 6. Code Style & Formatting
|
|
517
|
+
- [ ] Consistent indentation and spacing
|
|
518
|
+
- [ ] Lines under 100 characters (adjust for project)
|
|
519
|
+
- [ ] Imports organized: dependencies first, then relative imports
|
|
520
|
+
- [ ] No unused imports or variables
|
|
521
|
+
- [ ] Consistent quote style and semicolon usage
|
|
522
|
+
|
|
523
|
+
### 7. Type Safety (if applicable)
|
|
524
|
+
- [ ] Exported functions have explicit return types
|
|
525
|
+
- [ ] Generic types are narrow and well-constrained
|
|
526
|
+
- [ ] No use of "any" unless unavoidable (with comment)
|
|
527
|
+
- [ ] Objects prefer interfaces/types over inline shapes
|
|
528
|
+
- [ ] Nullable types are explicit (Optional, null, undefined)
|
|
529
|
+
|
|
530
|
+
### 8. Performance & Resources
|
|
531
|
+
- [ ] No N+1 queries or unnecessary loops
|
|
532
|
+
- [ ] No memory leaks (event listeners cleaned up, streams closed)
|
|
533
|
+
- [ ] No console.log in production code
|
|
534
|
+
- [ ] Heavy operations are async/non-blocking
|
|
535
|
+
|
|
536
|
+
### 9. Maintainability
|
|
537
|
+
- [ ] DRY: no obvious code duplication (extract to helper)
|
|
538
|
+
- [ ] Prefer composition over inheritance
|
|
539
|
+
- [ ] Constants are defined once (no magic numbers)
|
|
540
|
+
- [ ] Configuration is centralized, not scattered
|
|
541
|
+
- [ ] Dependencies are minimal and justified
|
|
542
|
+
|
|
543
|
+
### 10. Security & Best Practices
|
|
544
|
+
- [ ] No hardcoded secrets (API keys, passwords)
|
|
545
|
+
- [ ] Input validation for user-facing APIs
|
|
546
|
+
- [ ] SQL queries use parameterized statements (no injection)
|
|
547
|
+
- [ ] Dependencies are up-to-date and vulnerable-free
|
|
548
|
+
- [ ] CORS, CSP, or other security headers configured (if web)
|
|
549
|
+
|
|
550
|
+
---
|
|
551
|
+
## Output Format
|
|
552
|
+
For each file or module reviewed:
|
|
553
|
+
- **File:** [path/to/file]
|
|
554
|
+
- **Status:** PASS / WARNINGS / FAIL
|
|
555
|
+
- **Issues Found:** [List each issue with line number if applicable]
|
|
556
|
+
- **Recommendations:** [Specific, actionable improvements]
|
|
557
|
+
- **Priority:** CRITICAL / HIGH / MEDIUM / LOW
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
**Begin audit below. Scan all source files in the directory.**
|
|
561
|
+
`;
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* Build a prompt to audit all skills and commands for quality and coverage gaps.
|
|
565
|
+
* Useful for maintaining skill libraries and identifying missing coverage.
|
|
566
|
+
*
|
|
567
|
+
* @returns Skill stocktake prompt
|
|
568
|
+
*/
|
|
569
|
+
export function buildSkillStocktakePrompt() {
|
|
570
|
+
return `
|
|
571
|
+
Audit all available skills and commands for quality, coverage, and consistency.
|
|
572
|
+
|
|
573
|
+
## Audit Scope
|
|
574
|
+
|
|
575
|
+
### 1. Coverage Analysis
|
|
576
|
+
- [ ] List all available skills/commands by category
|
|
577
|
+
- [ ] Identify any obvious gaps (e.g., "we have email drafting but no email reply")
|
|
578
|
+
- [ ] Note overlapping or redundant skills
|
|
579
|
+
- [ ] Flag skills that seem underused or unfinished
|
|
580
|
+
- [ ] Check for skills that depend on external tools/APIs (and their health)
|
|
581
|
+
|
|
582
|
+
### 2. Quality Assessment
|
|
583
|
+
For each skill:
|
|
584
|
+
- **Documentation:** Is the skill description clear and actionable?
|
|
585
|
+
- **Parameters:** Are inputs well-defined and validated?
|
|
586
|
+
- **Output:** Does the skill return useful, formatted output?
|
|
587
|
+
- **Error Handling:** How does it fail gracefully?
|
|
588
|
+
- **Examples:** Are there usage examples?
|
|
589
|
+
|
|
590
|
+
### 3. Consistency Check
|
|
591
|
+
- [ ] Naming: Are skill names consistent in style (verbs, nouns, hyphens)?
|
|
592
|
+
- [ ] Behavior: Do similar skills work in similar ways?
|
|
593
|
+
- [ ] Parameters: Common parameters use same names across skills
|
|
594
|
+
- [ ] Output Format: Is output (JSON, markdown, etc.) predictable?
|
|
595
|
+
- [ ] Error Messages: Are failures explained clearly?
|
|
596
|
+
|
|
597
|
+
### 4. Performance & Reliability
|
|
598
|
+
- [ ] Skills respond in <5s for typical use cases
|
|
599
|
+
- [ ] No unnecessary external API calls
|
|
600
|
+
- [ ] Caching or batching where applicable
|
|
601
|
+
- [ ] Rate limiting or retry logic in place
|
|
602
|
+
- [ ] Uptime/reliability track record (if known)
|
|
603
|
+
|
|
604
|
+
### 5. Integration Opportunities
|
|
605
|
+
- [ ] Skills that could feed into each other (chaining)
|
|
606
|
+
- [ ] Skills that could share common utilities
|
|
607
|
+
- [ ] Duplicate logic that could be extracted
|
|
608
|
+
- [ ] Cross-tool dependency issues
|
|
609
|
+
|
|
610
|
+
---
|
|
611
|
+
## Output Format
|
|
612
|
+
Provide a structured report:
|
|
613
|
+
|
|
614
|
+
### Summary
|
|
615
|
+
- Total skills audited: X
|
|
616
|
+
- Pass: X | Warnings: X | Improvements needed: X
|
|
617
|
+
|
|
618
|
+
### By Category
|
|
619
|
+
For each category (e.g., Writing, Research, Data):
|
|
620
|
+
- Skills in category: [list]
|
|
621
|
+
- Coverage: [what's well covered, what's missing]
|
|
622
|
+
- Quality: [overall assessment]
|
|
623
|
+
|
|
624
|
+
### Gaps & Recommendations
|
|
625
|
+
- **High Priority:** [Missing skills or broken features]
|
|
626
|
+
- **Medium Priority:** [Quality or consistency improvements]
|
|
627
|
+
- **Low Priority:** [Nice-to-have enhancements or optimizations]
|
|
628
|
+
|
|
629
|
+
### Top 5 Improvements
|
|
630
|
+
1. [Specific action with expected benefit]
|
|
631
|
+
2. [...]
|
|
632
|
+
|
|
633
|
+
---
|
|
634
|
+
**Begin audit below.**
|
|
635
|
+
`;
|
|
636
|
+
}
|
|
637
|
+
// ── Chief of Staff / Communication ────────────────────────
|
|
638
|
+
/**
|
|
639
|
+
* Build a prompt for communication triage and Chief of Staff duties.
|
|
640
|
+
* Helps draft emails, summarize threads, prioritize messages.
|
|
641
|
+
*
|
|
642
|
+
* @param context — Current context (e.g., email thread, list of messages)
|
|
643
|
+
* @returns Chief of staff triage prompt
|
|
644
|
+
*/
|
|
645
|
+
export function buildChiefOfStaffPrompt(context) {
|
|
646
|
+
return `
|
|
647
|
+
Act as a Chief of Staff to triage and manage the following communications context.
|
|
648
|
+
|
|
649
|
+
## Context
|
|
650
|
+
\`\`\`
|
|
651
|
+
${context}
|
|
652
|
+
\`\`\`
|
|
653
|
+
|
|
654
|
+
## Triage Tasks
|
|
655
|
+
|
|
656
|
+
### 1. Priority Assessment
|
|
657
|
+
For each message, email, or thread:
|
|
658
|
+
- **Priority:** URGENT | HIGH | MEDIUM | LOW
|
|
659
|
+
- **Category:** Decision Needed | FYI | Action Required | Discussion
|
|
660
|
+
- **Owner:** Who should handle this? (if identifiable)
|
|
661
|
+
- **Timeline:** When is a response/decision due?
|
|
662
|
+
- **Impact:** If left unaddressed, what happens?
|
|
663
|
+
|
|
664
|
+
### 2. Summarization
|
|
665
|
+
For long threads or email chains:
|
|
666
|
+
- **Subject:** One-line summary
|
|
667
|
+
- **Key Points:** 3–5 bullet points of the core issue
|
|
668
|
+
- **Stakes:** What's at risk? What's the decision?
|
|
669
|
+
- **Sentiment:** Is there urgency, conflict, or alignment?
|
|
670
|
+
- **Recommended Response:** Approving, requesting more info, escalating, etc.
|
|
671
|
+
|
|
672
|
+
### 3. Draft Responses
|
|
673
|
+
For messages requiring replies:
|
|
674
|
+
- **To:** Recipient(s)
|
|
675
|
+
- **Subject Line:** Clear, professional
|
|
676
|
+
- **Body:**
|
|
677
|
+
- Acknowledge the sender's concern/question
|
|
678
|
+
- Provide a clear answer or next step
|
|
679
|
+
- Keep it concise (under 150 words if possible)
|
|
680
|
+
- Maintain consistent tone
|
|
681
|
+
- **Tone Options:** Professional, warm, direct, collaborative (choose based on context)
|
|
682
|
+
|
|
683
|
+
### 4. Meeting Notes / Action Items
|
|
684
|
+
If this involves a meeting or decision point:
|
|
685
|
+
- **Attendees:** Who was there?
|
|
686
|
+
- **Decisions Made:** What was agreed?
|
|
687
|
+
- **Action Items:** Who owns what, with deadline?
|
|
688
|
+
- **Follow-up:** What's the next touchpoint?
|
|
689
|
+
|
|
690
|
+
### 5. Identify Patterns
|
|
691
|
+
- **Recurring Issues:** Any themes across messages?
|
|
692
|
+
- **Blocking Points:** What's slowing decisions or actions?
|
|
693
|
+
- **Communication Gaps:** Where's unclear or missing info?
|
|
694
|
+
- **Escalation Risks:** What could become problems if not addressed?
|
|
695
|
+
|
|
696
|
+
---
|
|
697
|
+
## Output Format
|
|
698
|
+
|
|
699
|
+
### Quick Triage Table
|
|
700
|
+
| Subject | Priority | Category | Owner | Due | Action |
|
|
701
|
+
|---------|----------|----------|-------|-----|--------|
|
|
702
|
+
| [subject] | HIGH | Decision | [name] | [date] | [brief action] |
|
|
703
|
+
| ... | | | | | |
|
|
704
|
+
|
|
705
|
+
### Detailed Summaries
|
|
706
|
+
**[Message/Thread 1 Subject]**
|
|
707
|
+
- Priority: HIGH
|
|
708
|
+
- Summary: [2–3 sentences]
|
|
709
|
+
- Recommended Action: [Specific next step]
|
|
710
|
+
- Draft Response: [If needed, include suggested reply]
|
|
711
|
+
|
|
712
|
+
### Patterns & Recommendations
|
|
713
|
+
- Pattern 1: [Observation]
|
|
714
|
+
- Pattern 2: [Observation]
|
|
715
|
+
- Recommended Process Change: [How to avoid this in future]
|
|
716
|
+
|
|
717
|
+
---
|
|
718
|
+
**Begin triage below.**
|
|
719
|
+
`;
|
|
720
|
+
}
|
|
721
|
+
//# sourceMappingURL=content-engine.js.map
|