@robbiesrobotics/alice-agents 1.5.11 → 1.5.13
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 +15 -24
- package/bin/alice-install.mjs +5 -22
- package/lib/agent-registry.mjs +50 -9
- package/lib/alice-runtime-adapter.mjs +50 -0
- package/lib/doctor.mjs +1 -32
- package/lib/hermes-installer.mjs +33 -51
- package/lib/installer.mjs +134 -257
- package/lib/manifest.mjs +14 -9
- package/lib/prompter.mjs +2 -34
- package/lib/workspace-scaffolder.mjs +193 -17
- package/package.json +14 -9
- package/templates/agents-pro.json +147 -36
- package/templates/agents-starter.json +207 -7
- package/templates/workspaces/_shared/AGENTS-orchestrator.md +19 -9
- package/templates/workspaces/_shared/AGENTS.md +9 -0
- package/templates/workspaces/_shared/HEARTBEAT.md +18 -0
- package/templates/workspaces/_shared/PLAYBOOK.md +6 -6
- package/templates/workspaces/_shared/SOUL-coding.md +20 -0
- package/templates/workspaces/_shared/SOUL-hermes.md +20 -0
- package/templates/workspaces/_shared/SOUL-orchestrator.md +20 -0
- package/templates/workspaces/_shared/SOUL.md +20 -0
- package/templates/workspaces/athena/AGENTS.md +172 -0
- package/templates/workspaces/athena/SOUL.md +59 -0
- package/templates/workspaces/athena/TOOLS.md +63 -0
- package/templates/workspaces/devon/AGENTS.md +50 -34
- package/templates/workspaces/devon/TOOLS.md +20 -37
- package/templates/workspaces/dylan/AGENTS.md +44 -34
- package/templates/workspaces/dylan/TOOLS.md +11 -35
- package/templates/workspaces/felix/AGENTS.md +50 -34
- package/templates/workspaces/felix/TOOLS.md +20 -45
- package/templates/workspaces/morgan/AGENTS.md +48 -39
- package/templates/workspaces/morgan/TOOLS.md +26 -9
- package/templates/workspaces/priya/AGENTS.md +68 -0
- package/templates/workspaces/priya/TOOLS.md +32 -0
- package/templates/workspaces/quinn/AGENTS.md +50 -34
- package/templates/workspaces/quinn/TOOLS.md +30 -48
- package/templates/workspaces/sasha/AGENTS.md +68 -0
- package/templates/workspaces/sasha/TOOLS.md +32 -0
- package/bin/alice-cloud.cjs +0 -385
- package/lib/mission-control.mjs +0 -242
- package/snapshots/.gitkeep +0 -0
- package/templates/mission-control-bridge/index.ts +0 -695
- package/templates/mission-control-bridge/openclaw.plugin.json +0 -8
- package/templates/mission-control-bridge/package.json +0 -11
- package/templates/skills/.gitkeep +0 -0
- package/templates/skills/acculynx/SKILL.md +0 -183
- package/templates/skills/acculynx/references/analysis_template.py +0 -116
- package/templates/skills/acculynx/references/dashboard_page.tsx +0 -641
- package/templates/skills/claude-code/.gitkeep +0 -0
- package/templates/skills/claude-code/SKILL.md +0 -111
- package/templates/skills/coding-agent/SKILL.md +0 -68
- package/templates/skills/crawl4ai/SKILL.md +0 -119
- package/templates/skills/crawl4ai/scripts/crwl +0 -3
- package/templates/workspaces/.gitkeep +0 -0
- package/templates/workspaces/_shared/.gitkeep +0 -0
- package/templates/workspaces/accuscope/AGENTS.md +0 -38
- package/templates/workspaces/accuscope/FEEDBACK.md +0 -27
- package/templates/workspaces/accuscope/HEARTBEAT.md +0 -26
- package/templates/workspaces/accuscope/IDENTITY.md +0 -48
- package/templates/workspaces/accuscope/LEARNINGS.md +0 -46
- package/templates/workspaces/accuscope/MEMORY.md +0 -47
- package/templates/workspaces/accuscope/PLAYBOOK.md +0 -65
- package/templates/workspaces/accuscope/SOUL.md +0 -40
- package/templates/workspaces/accuscope/TOOLS.md +0 -63
- package/templates/workspaces/accuscope/USER.md +0 -39
- package/templates/workspaces/aiden/AGENTS.md +0 -52
- package/templates/workspaces/aiden/FEEDBACK.md +0 -12
- package/templates/workspaces/aiden/HEARTBEAT.md +0 -9
- package/templates/workspaces/aiden/IDENTITY.md +0 -6
- package/templates/workspaces/aiden/LEARNINGS.md +0 -6
- package/templates/workspaces/aiden/MEMORY.md +0 -22
- package/templates/workspaces/aiden/PLAYBOOK.md +0 -16
- package/templates/workspaces/aiden/SOUL.md +0 -39
- package/templates/workspaces/aiden/TOOLS.md +0 -57
- package/templates/workspaces/aiden/USER.md +0 -17
- package/templates/workspaces/alex/AGENTS.md +0 -52
- package/templates/workspaces/alex/FEEDBACK.md +0 -11
- package/templates/workspaces/alex/HEARTBEAT.md +0 -9
- package/templates/workspaces/alex/IDENTITY.md +0 -6
- package/templates/workspaces/alex/LEARNINGS.md +0 -5
- package/templates/workspaces/alex/MEMORY.md +0 -22
- package/templates/workspaces/alex/PLAYBOOK.md +0 -16
- package/templates/workspaces/alex/SOUL.md +0 -40
- package/templates/workspaces/alex/TOOLS.md +0 -56
- package/templates/workspaces/alex/USER.md +0 -13
- package/templates/workspaces/aria/AGENTS.md +0 -18
- package/templates/workspaces/aria/FEEDBACK.md +0 -12
- package/templates/workspaces/aria/HEARTBEAT.md +0 -32
- package/templates/workspaces/aria/IDENTITY.md +0 -12
- package/templates/workspaces/aria/LEARNINGS.md +0 -31
- package/templates/workspaces/aria/MEMORY.md +0 -29
- package/templates/workspaces/aria/PLAYBOOK.md +0 -71
- package/templates/workspaces/aria/SOUL.md +0 -57
- package/templates/workspaces/aria/TOOLS.md +0 -47
- package/templates/workspaces/aria/USER.md +0 -18
- package/templates/workspaces/audrey/AGENTS.md +0 -59
- package/templates/workspaces/audrey/FEEDBACK.md +0 -11
- package/templates/workspaces/audrey/HEARTBEAT.md +0 -9
- package/templates/workspaces/audrey/IDENTITY.md +0 -6
- package/templates/workspaces/audrey/LEARNINGS.md +0 -5
- package/templates/workspaces/audrey/MEMORY.md +0 -22
- package/templates/workspaces/audrey/PLAYBOOK.md +0 -16
- package/templates/workspaces/audrey/SOUL.md +0 -39
- package/templates/workspaces/audrey/TOOLS.md +0 -15
- package/templates/workspaces/audrey/USER.md +0 -13
- package/templates/workspaces/avery/AGENTS.md +0 -52
- package/templates/workspaces/avery/FEEDBACK.md +0 -12
- package/templates/workspaces/avery/HEARTBEAT.md +0 -5
- package/templates/workspaces/avery/IDENTITY.md +0 -6
- package/templates/workspaces/avery/LEARNINGS.md +0 -6
- package/templates/workspaces/avery/MEMORY.md +0 -22
- package/templates/workspaces/avery/PLAYBOOK.md +0 -16
- package/templates/workspaces/avery/SOUL.md +0 -40
- package/templates/workspaces/avery/TOOLS.md +0 -47
- package/templates/workspaces/avery/USER.md +0 -17
- package/templates/workspaces/avery/skills/claude-code/SKILL.md +0 -38
- package/templates/workspaces/avery/skills/claude-code/claude_code +0 -55
- package/templates/workspaces/caleb/AGENTS.md +0 -52
- package/templates/workspaces/caleb/FEEDBACK.md +0 -11
- package/templates/workspaces/caleb/HEARTBEAT.md +0 -9
- package/templates/workspaces/caleb/IDENTITY.md +0 -6
- package/templates/workspaces/caleb/LEARNINGS.md +0 -5
- package/templates/workspaces/caleb/MEMORY.md +0 -22
- package/templates/workspaces/caleb/PLAYBOOK.md +0 -16
- package/templates/workspaces/caleb/SOUL.md +0 -39
- package/templates/workspaces/caleb/TOOLS.md +0 -30
- package/templates/workspaces/caleb/USER.md +0 -13
- package/templates/workspaces/clara/AGENTS.md +0 -59
- package/templates/workspaces/clara/FEEDBACK.md +0 -12
- package/templates/workspaces/clara/HEARTBEAT.md +0 -5
- package/templates/workspaces/clara/IDENTITY.md +0 -6
- package/templates/workspaces/clara/LEARNINGS.md +0 -6
- package/templates/workspaces/clara/MEMORY.md +0 -22
- package/templates/workspaces/clara/PLAYBOOK.md +0 -16
- package/templates/workspaces/clara/SOUL.md +0 -39
- package/templates/workspaces/clara/TOOLS.md +0 -15
- package/templates/workspaces/clara/USER.md +0 -17
- package/templates/workspaces/daphne/AGENTS.md +0 -59
- package/templates/workspaces/daphne/FEEDBACK.md +0 -18
- package/templates/workspaces/daphne/HEARTBEAT.md +0 -5
- package/templates/workspaces/daphne/IDENTITY.md +0 -6
- package/templates/workspaces/daphne/LEARNINGS.md +0 -6
- package/templates/workspaces/daphne/MEMORY.md +0 -22
- package/templates/workspaces/daphne/PLAYBOOK.md +0 -48
- package/templates/workspaces/daphne/SOUL.md +0 -39
- package/templates/workspaces/daphne/TOOLS.md +0 -15
- package/templates/workspaces/daphne/USER.md +0 -17
- package/templates/workspaces/darius/AGENTS.md +0 -52
- package/templates/workspaces/darius/FEEDBACK.md +0 -12
- package/templates/workspaces/darius/HEARTBEAT.md +0 -5
- package/templates/workspaces/darius/IDENTITY.md +0 -6
- package/templates/workspaces/darius/LEARNINGS.md +0 -6
- package/templates/workspaces/darius/MEMORY.md +0 -22
- package/templates/workspaces/darius/PLAYBOOK.md +0 -16
- package/templates/workspaces/darius/SOUL.md +0 -40
- package/templates/workspaces/darius/TOOLS.md +0 -57
- package/templates/workspaces/darius/USER.md +0 -17
- package/templates/workspaces/darius/skills/claude-code/SKILL.md +0 -38
- package/templates/workspaces/darius/skills/claude-code/claude_code +0 -55
- package/templates/workspaces/devon/FEEDBACK.md +0 -11
- package/templates/workspaces/devon/HEARTBEAT.md +0 -5
- package/templates/workspaces/devon/IDENTITY.md +0 -6
- package/templates/workspaces/devon/LEARNINGS.md +0 -11
- package/templates/workspaces/devon/MEMORY.md +0 -22
- package/templates/workspaces/devon/PLAYBOOK.md +0 -16
- package/templates/workspaces/devon/SOUL.md +0 -40
- package/templates/workspaces/devon/USER.md +0 -13
- package/templates/workspaces/devon/check_github.py +0 -12
- package/templates/workspaces/devon/check_mc_env.py +0 -30
- package/templates/workspaces/devon/check_sb.py +0 -34
- package/templates/workspaces/devon/check_vercel.py +0 -12
- package/templates/workspaces/devon/get_mc_files.py +0 -17
- package/templates/workspaces/devon/write_heartbeat.py +0 -67
- package/templates/workspaces/dylan/.env.example +0 -33
- package/templates/workspaces/dylan/00007_verify_licenses_table.sql +0 -100
- package/templates/workspaces/dylan/FEEDBACK.md +0 -28
- package/templates/workspaces/dylan/HEARTBEAT.md +0 -5
- package/templates/workspaces/dylan/IDENTITY.md +0 -6
- package/templates/workspaces/dylan/LEARNINGS.md +0 -70
- package/templates/workspaces/dylan/MEMORY.md +0 -22
- package/templates/workspaces/dylan/PLAYBOOK.md +0 -16
- package/templates/workspaces/dylan/SOUL.md +0 -42
- package/templates/workspaces/dylan/STRIPE_PIPELINE.md +0 -185
- package/templates/workspaces/dylan/USER.md +0 -17
- package/templates/workspaces/dylan/n8n-stripe-welcome-workflow.json +0 -123
- package/templates/workspaces/dylan/skills/claude-code/SKILL.md +0 -38
- package/templates/workspaces/dylan/skills/claude-code/claude_code +0 -55
- package/templates/workspaces/dylan/stripe-webhook-handler.py +0 -433
- package/templates/workspaces/dylan/test_mock_webhook.py +0 -103
- package/templates/workspaces/elena/AGENTS.md +0 -59
- package/templates/workspaces/elena/FEEDBACK.md +0 -11
- package/templates/workspaces/elena/HEARTBEAT.md +0 -9
- package/templates/workspaces/elena/IDENTITY.md +0 -6
- package/templates/workspaces/elena/LEARNINGS.md +0 -5
- package/templates/workspaces/elena/MEMORY.md +0 -22
- package/templates/workspaces/elena/PLAYBOOK.md +0 -16
- package/templates/workspaces/elena/SOUL.md +0 -39
- package/templates/workspaces/elena/TOOLS.md +0 -15
- package/templates/workspaces/elena/USER.md +0 -13
- package/templates/workspaces/eva/AGENTS.md +0 -59
- package/templates/workspaces/eva/FEEDBACK.md +0 -11
- package/templates/workspaces/eva/HEARTBEAT.md +0 -9
- package/templates/workspaces/eva/IDENTITY.md +0 -6
- package/templates/workspaces/eva/LEARNINGS.md +0 -5
- package/templates/workspaces/eva/MEMORY.md +0 -22
- package/templates/workspaces/eva/PLAYBOOK.md +0 -16
- package/templates/workspaces/eva/SOUL.md +0 -39
- package/templates/workspaces/eva/TOOLS.md +0 -15
- package/templates/workspaces/eva/USER.md +0 -13
- package/templates/workspaces/felix/FEEDBACK.md +0 -11
- package/templates/workspaces/felix/HEARTBEAT.md +0 -5
- package/templates/workspaces/felix/IDENTITY.md +0 -6
- package/templates/workspaces/felix/LEARNINGS.md +0 -17
- package/templates/workspaces/felix/MEMORY.md +0 -22
- package/templates/workspaces/felix/PLAYBOOK.md +0 -16
- package/templates/workspaces/felix/SOUL.md +0 -40
- package/templates/workspaces/felix/USER.md +0 -13
- package/templates/workspaces/felix/fidelia-psychology.html +0 -1594
- package/templates/workspaces/felix/task.txt +0 -164
- package/templates/workspaces/hannah/AGENTS.md +0 -59
- package/templates/workspaces/hannah/FEEDBACK.md +0 -12
- package/templates/workspaces/hannah/HEARTBEAT.md +0 -5
- package/templates/workspaces/hannah/IDENTITY.md +0 -6
- package/templates/workspaces/hannah/LEARNINGS.md +0 -6
- package/templates/workspaces/hannah/MEMORY.md +0 -22
- package/templates/workspaces/hannah/PLAYBOOK.md +0 -16
- package/templates/workspaces/hannah/SOUL.md +0 -39
- package/templates/workspaces/hannah/TOOLS.md +0 -15
- package/templates/workspaces/hannah/USER.md +0 -17
- package/templates/workspaces/isaac/AGENTS.md +0 -52
- package/templates/workspaces/isaac/FEEDBACK.md +0 -12
- package/templates/workspaces/isaac/HEARTBEAT.md +0 -9
- package/templates/workspaces/isaac/IDENTITY.md +0 -6
- package/templates/workspaces/isaac/LEARNINGS.md +0 -6
- package/templates/workspaces/isaac/MEMORY.md +0 -22
- package/templates/workspaces/isaac/PLAYBOOK.md +0 -16
- package/templates/workspaces/isaac/SOUL.md +0 -40
- package/templates/workspaces/isaac/TOOLS.md +0 -52
- package/templates/workspaces/isaac/USER.md +0 -17
- package/templates/workspaces/isaac/skills/claude-code/SKILL.md +0 -38
- package/templates/workspaces/isaac/skills/claude-code/claude_code +0 -55
- package/templates/workspaces/logan/AGENTS.md +0 -59
- package/templates/workspaces/logan/FEEDBACK.md +0 -11
- package/templates/workspaces/logan/HEARTBEAT.md +0 -9
- package/templates/workspaces/logan/IDENTITY.md +0 -6
- package/templates/workspaces/logan/LEARNINGS.md +0 -5
- package/templates/workspaces/logan/MEMORY.md +0 -22
- package/templates/workspaces/logan/PLAYBOOK.md +0 -16
- package/templates/workspaces/logan/SOUL.md +0 -39
- package/templates/workspaces/logan/TOOLS.md +0 -15
- package/templates/workspaces/logan/USER.md +0 -13
- package/templates/workspaces/maxxipro/AGENTS.md +0 -29
- package/templates/workspaces/maxxipro/FEEDBACK.md +0 -19
- package/templates/workspaces/maxxipro/HEARTBEAT.md +0 -22
- package/templates/workspaces/maxxipro/IDENTITY.md +0 -35
- package/templates/workspaces/maxxipro/KNOWLEDGE.md +0 -335
- package/templates/workspaces/maxxipro/LEARNINGS.md +0 -47
- package/templates/workspaces/maxxipro/MEMORY.md +0 -60
- package/templates/workspaces/maxxipro/OUTREACH_TEMPLATES.md +0 -143
- package/templates/workspaces/maxxipro/PLAYBOOK.md +0 -81
- package/templates/workspaces/maxxipro/SOUL.md +0 -146
- package/templates/workspaces/maxxipro/TOOLS.md +0 -81
- package/templates/workspaces/maxxipro/USER.md +0 -40
- package/templates/workspaces/morgan/FEEDBACK.md +0 -19
- package/templates/workspaces/morgan/HEARTBEAT.md +0 -5
- package/templates/workspaces/morgan/IDENTITY.md +0 -6
- package/templates/workspaces/morgan/LEARNINGS.md +0 -18
- package/templates/workspaces/morgan/MEMORY.md +0 -22
- package/templates/workspaces/morgan/PLAYBOOK.md +0 -16
- package/templates/workspaces/morgan/SOUL.md +0 -39
- package/templates/workspaces/morgan/USER.md +0 -13
- package/templates/workspaces/nadia/AGENTS.md +0 -59
- package/templates/workspaces/nadia/FEEDBACK.md +0 -12
- package/templates/workspaces/nadia/HEARTBEAT.md +0 -5
- package/templates/workspaces/nadia/IDENTITY.md +0 -6
- package/templates/workspaces/nadia/LEARNINGS.md +0 -6
- package/templates/workspaces/nadia/MEMORY.md +0 -22
- package/templates/workspaces/nadia/PLAYBOOK.md +0 -16
- package/templates/workspaces/nadia/SOUL.md +0 -39
- package/templates/workspaces/nadia/TOOLS.md +0 -15
- package/templates/workspaces/nadia/USER.md +0 -13
- package/templates/workspaces/nate/AGENTS.md +0 -24
- package/templates/workspaces/nate/FEEDBACK.md +0 -12
- package/templates/workspaces/nate/HEARTBEAT.md +0 -33
- package/templates/workspaces/nate/IDENTITY.md +0 -15
- package/templates/workspaces/nate/LEARNINGS.md +0 -33
- package/templates/workspaces/nate/MEMORY.md +0 -39
- package/templates/workspaces/nate/PLAYBOOK.md +0 -160
- package/templates/workspaces/nate/SOUL.md +0 -50
- package/templates/workspaces/nate/TOOLS.md +0 -111
- package/templates/workspaces/nate/USER.md +0 -32
- package/templates/workspaces/olivia/.last-openclaw-version +0 -1
- package/templates/workspaces/olivia/.npmrc.tmp +0 -0
- package/templates/workspaces/olivia/AGENTS.md +0 -77
- package/templates/workspaces/olivia/ALPHA_CODING_BENCHMARK.txt +0 -148
- package/templates/workspaces/olivia/ALPHA_MODEL_GUIDE.md +0 -393
- package/templates/workspaces/olivia/FEEDBACK.md +0 -13
- package/templates/workspaces/olivia/HEADTOHEAD_BENCHMARK.txt +0 -1289
- package/templates/workspaces/olivia/HEARTBEAT.md +0 -267
- package/templates/workspaces/olivia/IDENTITY.md +0 -6
- package/templates/workspaces/olivia/LEARNINGS.md +0 -708
- package/templates/workspaces/olivia/MEMORY.md +0 -202
- package/templates/workspaces/olivia/MISSION_CONTROL_DESIGN_SPEC_v1.md +0 -1143
- package/templates/workspaces/olivia/MVP-COMPLETION-SUMMARY.md +0 -175
- package/templates/workspaces/olivia/NETWORK_IMPLEMENTATION_PLAN.md +0 -1556
- package/templates/workspaces/olivia/NEW_NODES_BENCHMARK.txt +0 -947
- package/templates/workspaces/olivia/PLAYBOOK.md +0 -42
- package/templates/workspaces/olivia/SELF-HEALING-COMPLETE.md +0 -150
- package/templates/workspaces/olivia/SOUL.md +0 -42
- package/templates/workspaces/olivia/TOOLS.md +0 -15
- package/templates/workspaces/olivia/USER.md +0 -17
- package/templates/workspaces/olivia/alicefleet-supabase-credentials.md +0 -50
- package/templates/workspaces/olivia/dzombo-copy-rewrite.md +0 -115
- package/templates/workspaces/olivia/dzombo-implementation-plan.md +0 -1248
- package/templates/workspaces/olivia/fidelia-psychology.html +0 -1594
- package/templates/workspaces/olivia/lead_debug.png +0 -0
- package/templates/workspaces/olivia/minimatch-10.2.4.tgz +0 -0
- package/templates/workspaces/olivia/operation-bllm-research.md +0 -157
- package/templates/workspaces/olivia/qa-audit-mission-control-v2.md +0 -538
- package/templates/workspaces/olivia/roofmaxx_logo.svg +0 -1
- package/templates/workspaces/olivia/roofmaxx_social.jpg +0 -0
- package/templates/workspaces/olivia/skills/1password/SKILL.md +0 -53
- package/templates/workspaces/olivia/skills/1password/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/afrexai-recruiting-engine/README.md +0 -57
- package/templates/workspaces/olivia/skills/afrexai-recruiting-engine/SKILL.md +0 -534
- package/templates/workspaces/olivia/skills/afrexai-recruiting-engine/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/agent-security/SKILL.md +0 -69
- package/templates/workspaces/olivia/skills/agent-security/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/agentic-security-audit/SKILL.md +0 -855
- package/templates/workspaces/olivia/skills/agentic-security-audit/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/ai-automation-consulting/SKILL.md +0 -67
- package/templates/workspaces/olivia/skills/ai-automation-consulting/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/ai-automation-consulting/skill.json +0 -12
- package/templates/workspaces/olivia/skills/ai-presentation-maker/SKILL.md +0 -1104
- package/templates/workspaces/olivia/skills/ai-presentation-maker/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/ai-productivity-audit/SKILL.md +0 -181
- package/templates/workspaces/olivia/skills/ai-productivity-audit/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/ai-researcher/README.md +0 -31
- package/templates/workspaces/olivia/skills/ai-researcher/SKILL.md +0 -59
- package/templates/workspaces/olivia/skills/ai-researcher/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/ai-seo-writer/README.md +0 -19
- package/templates/workspaces/olivia/skills/ai-seo-writer/SKILL.md +0 -100
- package/templates/workspaces/olivia/skills/ai-seo-writer/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/analytics-tracking-2/SKILL.md +0 -309
- package/templates/workspaces/olivia/skills/analytics-tracking-2/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/api-doc-writer/SKILL.md +0 -232
- package/templates/workspaces/olivia/skills/api-doc-writer/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/api-generator/SKILL.md +0 -49
- package/templates/workspaces/olivia/skills/api-generator/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/api-generator/tips.md +0 -10
- package/templates/workspaces/olivia/skills/apple-notes/SKILL.md +0 -50
- package/templates/workspaces/olivia/skills/apple-notes/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/apple-reminders/SKILL.md +0 -67
- package/templates/workspaces/olivia/skills/apple-reminders/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/automation-workflows/SKILL.md +0 -267
- package/templates/workspaces/olivia/skills/automation-workflows/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/autoresearch/SKILL.md +0 -46
- package/templates/workspaces/olivia/skills/autoresearch/aria_write.py +0 -148
- package/templates/workspaces/olivia/skills/autoresearch/autoresearch.py +0 -75
- package/templates/workspaces/olivia/skills/azure-devops/SKILL.md +0 -115
- package/templates/workspaces/olivia/skills/azure-devops/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/blogwatcher/SKILL.md +0 -46
- package/templates/workspaces/olivia/skills/blogwatcher/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/blucli/SKILL.md +0 -27
- package/templates/workspaces/olivia/skills/blucli/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/check-analytics/SKILL.md +0 -92
- package/templates/workspaces/olivia/skills/check-analytics/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/cloud-architect/SKILL.md +0 -89
- package/templates/workspaces/olivia/skills/cloud-architect/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/cloud-infra-automation/SKILL.md +0 -50
- package/templates/workspaces/olivia/skills/cloud-infra-automation/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/cloud-storage/SKILL.md +0 -61
- package/templates/workspaces/olivia/skills/cloud-storage/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/cloud-storage/auth.md +0 -97
- package/templates/workspaces/olivia/skills/cloud-storage/costs.md +0 -88
- package/templates/workspaces/olivia/skills/cloud-storage/providers.md +0 -55
- package/templates/workspaces/olivia/skills/copywriting-pro/SKILL.md +0 -107
- package/templates/workspaces/olivia/skills/copywriting-pro/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/data-analyst-pro/SKILL.md +0 -21
- package/templates/workspaces/olivia/skills/data-analyst-pro/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/database-designer/README.md +0 -388
- package/templates/workspaces/olivia/skills/database-designer/SKILL.md +0 -66
- package/templates/workspaces/olivia/skills/database-designer/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/database-designer/index_optimizer.py +0 -926
- package/templates/workspaces/olivia/skills/database-designer/migration_generator.py +0 -1199
- package/templates/workspaces/olivia/skills/database-designer/schema_analyzer.py +0 -982
- package/templates/workspaces/olivia/skills/deploy-agent/SKILL.md +0 -255
- package/templates/workspaces/olivia/skills/deploy-agent/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/devops-automation-pack/SKILL.md +0 -72
- package/templates/workspaces/olivia/skills/devops-automation-pack/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/devops-automation-pack/deploy.sh +0 -0
- package/templates/workspaces/olivia/skills/financial-analysis-agent/SKILL.md +0 -489
- package/templates/workspaces/olivia/skills/financial-analysis-agent/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/gdpr-compliance-tracker/README.md +0 -72
- package/templates/workspaces/olivia/skills/gdpr-compliance-tracker/SKILL.md +0 -226
- package/templates/workspaces/olivia/skills/gdpr-compliance-tracker/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/gifgrep/SKILL.md +0 -47
- package/templates/workspaces/olivia/skills/gifgrep/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/github/SKILL.md +0 -47
- package/templates/workspaces/olivia/skills/github/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/gog/SKILL.md +0 -36
- package/templates/workspaces/olivia/skills/gog/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/growth-strategy-hub/SKILL.md +0 -135
- package/templates/workspaces/olivia/skills/growth-strategy-hub/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/growth-strategy-hub/metadata.json +0 -4
- package/templates/workspaces/olivia/skills/hetzner-cloud/SKILL.md +0 -130
- package/templates/workspaces/olivia/skills/hetzner-cloud/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/himalaya/SKILL.md +0 -217
- package/templates/workspaces/olivia/skills/himalaya/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/hotel-recommendation/SKILL.md +0 -117
- package/templates/workspaces/olivia/skills/hotel-recommendation/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/hr-policy-generator/SKILL.md +0 -54
- package/templates/workspaces/olivia/skills/hr-policy-generator/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/human-writing/SKILL.md +0 -41
- package/templates/workspaces/olivia/skills/human-writing/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/imsg/SKILL.md +0 -25
- package/templates/workspaces/olivia/skills/imsg/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/in-depth-research/SKILL.md +0 -124
- package/templates/workspaces/olivia/skills/in-depth-research/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/in-depth-research/methodology.md +0 -75
- package/templates/workspaces/olivia/skills/in-depth-research/output-formats.md +0 -168
- package/templates/workspaces/olivia/skills/in-depth-research/sources.md +0 -80
- package/templates/workspaces/olivia/skills/javascript-skills/README.md +0 -71
- package/templates/workspaces/olivia/skills/javascript-skills/SKILL.md +0 -746
- package/templates/workspaces/olivia/skills/javascript-skills/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/leadership-strategy-playbook/SKILL.md +0 -147
- package/templates/workspaces/olivia/skills/leadership-strategy-playbook/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/market-research-agent/README.md +0 -29
- package/templates/workspaces/olivia/skills/market-research-agent/SKILL.md +0 -52
- package/templates/workspaces/olivia/skills/market-research-agent/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/marketing-analytics/SKILL.md +0 -74
- package/templates/workspaces/olivia/skills/marketing-analytics/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/marketing-master-io/SKILL.md +0 -125
- package/templates/workspaces/olivia/skills/marketing-master-io/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/marketing-strategy-pmm/SKILL.md +0 -398
- package/templates/workspaces/olivia/skills/marketing-strategy-pmm/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/meta-ads-analytics/SKILL.md +0 -53
- package/templates/workspaces/olivia/skills/meta-ads-analytics/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/obsidian/SKILL.md +0 -55
- package/templates/workspaces/olivia/skills/obsidian/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/openclaw-accounting/SKILL.md +0 -125
- package/templates/workspaces/olivia/skills/openclaw-accounting/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/CHANGELOG.md +0 -35
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/CHANNELLOG.md +0 -73
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/README.md +0 -161
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/SKILL.md +0 -130
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/config.json +0 -36
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/metadata.json +0 -19
- package/templates/workspaces/olivia/skills/openhue/SKILL.md +0 -30
- package/templates/workspaces/olivia/skills/openhue/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/orgx-operations-agent/SKILL.md +0 -41
- package/templates/workspaces/olivia/skills/orgx-operations-agent/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/outreach/SKILL.md +0 -84
- package/templates/workspaces/olivia/skills/outreach/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/outreach/by-type.md +0 -166
- package/templates/workspaces/olivia/skills/outreach/templates.md +0 -154
- package/templates/workspaces/olivia/skills/outreach/tracking.md +0 -145
- package/templates/workspaces/olivia/skills/persona-hr-coordinator/SKILL.md +0 -38
- package/templates/workspaces/olivia/skills/persona-hr-coordinator/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/personal-productivity/SKILL.md +0 -161
- package/templates/workspaces/olivia/skills/personal-productivity/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/personal-productivity/index.js +0 -363
- package/templates/workspaces/olivia/skills/personal-productivity/package.json +0 -15
- package/templates/workspaces/olivia/skills/personal-travel/README.md +0 -34
- package/templates/workspaces/olivia/skills/personal-travel/SKILL.md +0 -46
- package/templates/workspaces/olivia/skills/personal-travel/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/presentation-html-generator-skill/SKILL.md +0 -185
- package/templates/workspaces/olivia/skills/presentation-html-generator-skill/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/product-manager/SKILL.md +0 -77
- package/templates/workspaces/olivia/skills/product-manager/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/quant-strategy/SKILL.md +0 -28
- package/templates/workspaces/olivia/skills/quant-strategy/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/sales-pipeline-tracker/README.md +0 -29
- package/templates/workspaces/olivia/skills/sales-pipeline-tracker/SKILL.md +0 -45
- package/templates/workspaces/olivia/skills/sales-pipeline-tracker/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/security-auditor/SKILL.md +0 -399
- package/templates/workspaces/olivia/skills/security-auditor/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/security-hardening/SKILL.md +0 -296
- package/templates/workspaces/olivia/skills/security-hardening/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/security-scanner/SKILL.md +0 -67
- package/templates/workspaces/olivia/skills/security-scanner/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/seo-optimization/SKILL.md +0 -31
- package/templates/workspaces/olivia/skills/seo-optimization/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/service-booking/SKILL.md +0 -193
- package/templates/workspaces/olivia/skills/service-booking/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/sme-hr-automation/SKILL.md +0 -131
- package/templates/workspaces/olivia/skills/sme-hr-automation/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/social-media-scheduler/README.md +0 -29
- package/templates/workspaces/olivia/skills/social-media-scheduler/SKILL.md +0 -49
- package/templates/workspaces/olivia/skills/social-media-scheduler/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/sonoscli/SKILL.md +0 -26
- package/templates/workspaces/olivia/skills/sonoscli/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/strategy-advisor/SKILL.md +0 -33
- package/templates/workspaces/olivia/skills/strategy-advisor/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/summarize/SKILL.md +0 -49
- package/templates/workspaces/olivia/skills/summarize/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/things-mac/SKILL.md +0 -61
- package/templates/workspaces/olivia/skills/things-mac/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/travel-itinerary-planner/SKILL.md +0 -121
- package/templates/workspaces/olivia/skills/travel-itinerary-planner/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/travel-manager/SKILL.md +0 -36
- package/templates/workspaces/olivia/skills/travel-manager/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/travel-planning/SKILL.md +0 -238
- package/templates/workspaces/olivia/skills/travel-planning/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/travel-planning/booking-guide.md +0 -91
- package/templates/workspaces/olivia/skills/travel-planning/memory-template.md +0 -111
- package/templates/workspaces/olivia/skills/travel-planning/multi-city.md +0 -131
- package/templates/workspaces/olivia/skills/travel-planning/packing-templates.md +0 -155
- package/templates/workspaces/olivia/skills/travel-planning/setup.md +0 -66
- package/templates/workspaces/olivia/skills/update-it-all/SKILL.md +0 -143
- package/templates/workspaces/olivia/skills/update-it-all/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/voice/SKILL.md +0 -62
- package/templates/workspaces/olivia/skills/weather/SKILL.md +0 -49
- package/templates/workspaces/olivia/skills/weather/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/web-researcher/SKILL.md +0 -21
- package/templates/workspaces/olivia/skills/web-researcher/_meta.json +0 -6
- package/templates/workspaces/olivia/skills/website-seo/SKILL.md +0 -284
- package/templates/workspaces/olivia/skills/website-seo/_meta.json +0 -6
- package/templates/workspaces/olivia/stripe-welcome-n8n.json +0 -103
- package/templates/workspaces/olivia/test2.wav.wav +0 -0
- package/templates/workspaces/olivia/test_speech.json +0 -1
- package/templates/workspaces/olivia/test_speech.srt +0 -0
- package/templates/workspaces/olivia/test_speech.tsv +0 -1
- package/templates/workspaces/olivia/test_speech.txt +0 -0
- package/templates/workspaces/olivia/test_speech.vtt +0 -2
- package/templates/workspaces/owen/AGENTS.md +0 -59
- package/templates/workspaces/owen/FEEDBACK.md +0 -12
- package/templates/workspaces/owen/HEARTBEAT.md +0 -5
- package/templates/workspaces/owen/IDENTITY.md +0 -6
- package/templates/workspaces/owen/LEARNINGS.md +0 -46
- package/templates/workspaces/owen/MEMORY.md +0 -22
- package/templates/workspaces/owen/PLAYBOOK.md +0 -16
- package/templates/workspaces/owen/SOUL.md +0 -39
- package/templates/workspaces/owen/TOOLS.md +0 -15
- package/templates/workspaces/owen/USER.md +0 -17
- package/templates/workspaces/parker/AGENTS.md +0 -59
- package/templates/workspaces/parker/FEEDBACK.md +0 -11
- package/templates/workspaces/parker/HEARTBEAT.md +0 -5
- package/templates/workspaces/parker/IDENTITY.md +0 -6
- package/templates/workspaces/parker/LEARNINGS.md +0 -17
- package/templates/workspaces/parker/MEMORY.md +0 -22
- package/templates/workspaces/parker/PLAYBOOK.md +0 -16
- package/templates/workspaces/parker/SOUL.md +0 -39
- package/templates/workspaces/parker/TOOLS.md +0 -15
- package/templates/workspaces/parker/USER.md +0 -13
- package/templates/workspaces/quinn/FEEDBACK.md +0 -11
- package/templates/workspaces/quinn/HEARTBEAT.md +0 -5
- package/templates/workspaces/quinn/IDENTITY.md +0 -6
- package/templates/workspaces/quinn/LEARNINGS.md +0 -35
- package/templates/workspaces/quinn/MEMORY.md +0 -22
- package/templates/workspaces/quinn/PLAYBOOK.md +0 -16
- package/templates/workspaces/quinn/SOUL.md +0 -40
- package/templates/workspaces/quinn/USER.md +0 -17
- package/templates/workspaces/quinn/alice-login-page.png +0 -0
- package/templates/workspaces/rowan/AGENTS.md +0 -59
- package/templates/workspaces/rowan/FEEDBACK.md +0 -12
- package/templates/workspaces/rowan/HEARTBEAT.md +0 -5
- package/templates/workspaces/rowan/IDENTITY.md +0 -6
- package/templates/workspaces/rowan/LEARNINGS.md +0 -12
- package/templates/workspaces/rowan/MEMORY.md +0 -22
- package/templates/workspaces/rowan/PLAYBOOK.md +0 -16
- package/templates/workspaces/rowan/SOUL.md +0 -40
- package/templates/workspaces/rowan/TOOLS.md +0 -59
- package/templates/workspaces/rowan/USER.md +0 -17
- package/templates/workspaces/selena/AGENTS.md +0 -59
- package/templates/workspaces/selena/FEEDBACK.md +0 -12
- package/templates/workspaces/selena/HEARTBEAT.md +0 -5
- package/templates/workspaces/selena/IDENTITY.md +0 -6
- package/templates/workspaces/selena/LEARNINGS.md +0 -24
- package/templates/workspaces/selena/MEMORY.md +0 -22
- package/templates/workspaces/selena/PLAYBOOK.md +0 -16
- package/templates/workspaces/selena/SOUL.md +0 -40
- package/templates/workspaces/selena/TOOLS.md +0 -47
- package/templates/workspaces/selena/USER.md +0 -17
- package/templates/workspaces/selena/kids-ai-security-compliance-plan.md +0 -791
- package/templates/workspaces/selena/kidspark-coppa-compliance-audit.md +0 -866
- package/templates/workspaces/sloane/AGENTS.md +0 -59
- package/templates/workspaces/sloane/FEEDBACK.md +0 -12
- package/templates/workspaces/sloane/HEARTBEAT.md +0 -9
- package/templates/workspaces/sloane/IDENTITY.md +0 -6
- package/templates/workspaces/sloane/LEARNINGS.md +0 -6
- package/templates/workspaces/sloane/MEMORY.md +0 -22
- package/templates/workspaces/sloane/PLAYBOOK.md +0 -16
- package/templates/workspaces/sloane/SOUL.md +0 -39
- package/templates/workspaces/sloane/TOOLS.md +0 -15
- package/templates/workspaces/sloane/USER.md +0 -13
- package/templates/workspaces/smoketestagent/AGENTS.md +0 -52
- package/templates/workspaces/smoketestagent/FEEDBACK.md +0 -3
- package/templates/workspaces/smoketestagent/HEARTBEAT.md +0 -14
- package/templates/workspaces/smoketestagent/IDENTITY.md +0 -6
- package/templates/workspaces/smoketestagent/LEARNINGS.md +0 -3
- package/templates/workspaces/smoketestagent/MEMORY.md +0 -24
- package/templates/workspaces/smoketestagent/PLAYBOOK.md +0 -7
- package/templates/workspaces/smoketestagent/SOUL.md +0 -32
- package/templates/workspaces/smoketestagent/TOOLS.md +0 -13
- package/templates/workspaces/smoketestagent/USER.md +0 -5
- package/templates/workspaces/sophie/AGENTS.md +0 -59
- package/templates/workspaces/sophie/FEEDBACK.md +0 -12
- package/templates/workspaces/sophie/HEARTBEAT.md +0 -9
- package/templates/workspaces/sophie/IDENTITY.md +0 -6
- package/templates/workspaces/sophie/LEARNINGS.md +0 -6
- package/templates/workspaces/sophie/MEMORY.md +0 -22
- package/templates/workspaces/sophie/PLAYBOOK.md +0 -16
- package/templates/workspaces/sophie/SOUL.md +0 -39
- package/templates/workspaces/sophie/TOOLS.md +0 -15
- package/templates/workspaces/sophie/USER.md +0 -17
- package/templates/workspaces/tommy/AGENTS.md +0 -59
- package/templates/workspaces/tommy/FEEDBACK.md +0 -12
- package/templates/workspaces/tommy/HEARTBEAT.md +0 -9
- package/templates/workspaces/tommy/IDENTITY.md +0 -6
- package/templates/workspaces/tommy/LEARNINGS.md +0 -6
- package/templates/workspaces/tommy/MEMORY.md +0 -22
- package/templates/workspaces/tommy/PLAYBOOK.md +0 -16
- package/templates/workspaces/tommy/SOUL.md +0 -39
- package/templates/workspaces/tommy/TOOLS.md +0 -15
- package/templates/workspaces/tommy/USER.md +0 -17
- package/templates/workspaces/uma/AGENTS.md +0 -59
- package/templates/workspaces/uma/FEEDBACK.md +0 -11
- package/templates/workspaces/uma/HEARTBEAT.md +0 -5
- package/templates/workspaces/uma/IDENTITY.md +0 -6
- package/templates/workspaces/uma/LEARNINGS.md +0 -11
- package/templates/workspaces/uma/MEMORY.md +0 -22
- package/templates/workspaces/uma/PLAYBOOK.md +0 -16
- package/templates/workspaces/uma/SOUL.md +0 -39
- package/templates/workspaces/uma/TOOLS.md +0 -15
- package/templates/workspaces/uma/USER.md +0 -13
- package/tools/.gitkeep +0 -0
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Product Manager
|
|
3
|
-
description: Build products users love with discovery, prioritization, roadmapping, and cross-functional leadership.
|
|
4
|
-
metadata: {"clawdbot":{"emoji":"🎯","os":["linux","darwin","win32"]}}
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Product Management Rules
|
|
8
|
-
|
|
9
|
-
## Discovery
|
|
10
|
-
- Talk to users weekly — not just at project kickoff
|
|
11
|
-
- Watch behavior, don't just collect opinions — users say one thing, do another
|
|
12
|
-
- Problem validation before solution validation — are we solving the right thing?
|
|
13
|
-
- Jobs to be done: what's the user trying to accomplish?
|
|
14
|
-
- Competitors show what's possible, not what to copy
|
|
15
|
-
|
|
16
|
-
## Prioritization
|
|
17
|
-
- Impact vs effort is a starting point, not the answer
|
|
18
|
-
- Say no more than yes — focus is a feature
|
|
19
|
-
- Urgent vs important: stakeholder pressure isn't priority
|
|
20
|
-
- Stack rank ruthlessly — "everything is P1" means nothing is
|
|
21
|
-
- Revisit priorities when context changes — quarterly at minimum
|
|
22
|
-
|
|
23
|
-
## Roadmapping
|
|
24
|
-
- Outcomes over outputs — what will change, not what we'll build
|
|
25
|
-
- Time horizons: now (committed), next (planned), later (possible)
|
|
26
|
-
- Communicate uncertainty honestly — roadmaps aren't promises
|
|
27
|
-
- Dependencies surfaced early — blocked work wastes everyone's time
|
|
28
|
-
- Update when reality changes — stale roadmaps destroy trust
|
|
29
|
-
|
|
30
|
-
## Requirements
|
|
31
|
-
- User stories: who, what, why — not how
|
|
32
|
-
- Acceptance criteria define done — ambiguity creates rework
|
|
33
|
-
- Edge cases addressed upfront — not discovered in QA
|
|
34
|
-
- Scope creep is the enemy — good enough now beats perfect later
|
|
35
|
-
- Technical constraints are real — work with engineering, not around them
|
|
36
|
-
|
|
37
|
-
## Working with Engineering
|
|
38
|
-
- Context over directives — explain why, not just what
|
|
39
|
-
- Tradeoffs are collaborative decisions
|
|
40
|
-
- Spec before sprint, not during — no designing on the fly
|
|
41
|
-
- Protect focus time — meetings kill flow
|
|
42
|
-
- Trust their estimates, push back on scope not time
|
|
43
|
-
|
|
44
|
-
## Working with Design
|
|
45
|
-
- Research together, don't hand off briefs
|
|
46
|
-
- Critique the work, not the designer
|
|
47
|
-
- Design reviews with users, not just stakeholders
|
|
48
|
-
- Mobile and edge cases early — not afterthoughts
|
|
49
|
-
- Design system enables speed — support it
|
|
50
|
-
|
|
51
|
-
## Stakeholder Management
|
|
52
|
-
- Regular updates prevent surprise requests
|
|
53
|
-
- Data calms opinion battles
|
|
54
|
-
- Explain trade-offs, don't just defend decisions
|
|
55
|
-
- Feedback channels prevent end-runs — make input easy
|
|
56
|
-
- Executive sponsors for big initiatives
|
|
57
|
-
|
|
58
|
-
## Metrics
|
|
59
|
-
- One north star metric, 2-3 supporting
|
|
60
|
-
- Leading indicators for early signal — don't wait for lagging
|
|
61
|
-
- Dashboards should prompt questions, not just display numbers
|
|
62
|
-
- Vanity metrics feel good, don't drive decisions
|
|
63
|
-
- A/B test when data beats intuition
|
|
64
|
-
|
|
65
|
-
## Launch
|
|
66
|
-
- Soft launch catches problems before scale
|
|
67
|
-
- Success criteria defined before launch — not after
|
|
68
|
-
- Rollback plan before rollout
|
|
69
|
-
- Cross-functional checklist: docs, support, marketing
|
|
70
|
-
- Post-launch review: what worked, what didn't
|
|
71
|
-
|
|
72
|
-
## Common Mistakes
|
|
73
|
-
- Feature factory: shipping without learning
|
|
74
|
-
- Overspeccing: killing engineering autonomy
|
|
75
|
-
- Consensus seeking: decisions by committee
|
|
76
|
-
- Ignoring qualitative: data alone misses why
|
|
77
|
-
- Roadmap as backlog: detail everything, commit nothing
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: quant-strategy
|
|
3
|
-
description: 辅助编写和回测量化交易策略,支持因子分析
|
|
4
|
-
metadata: {"openclaw": {"emoji": "🧮", "os": ["win32"]}}
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# 量化策略助手
|
|
8
|
-
|
|
9
|
-
你是一个量化交易策略助手,帮助用户构建和优化量化投资策略。
|
|
10
|
-
|
|
11
|
-
## 能力
|
|
12
|
-
|
|
13
|
-
1. **因子构建**:帮助设计和实现各类选股因子,包括价值因子、成长因子、动量因子、质量因子、波动率因子等。
|
|
14
|
-
|
|
15
|
-
2. **策略编写**:用 Python 编写量化交易策略代码,支持常见回测框架(如 backtrader、vnpy、聚宽等)。
|
|
16
|
-
|
|
17
|
-
3. **数据处理**:协助处理股票行情数据、财务数据的清洗、转换和特征工程。
|
|
18
|
-
|
|
19
|
-
4. **回测分析**:分析策略回测结果,包括年化收益率、最大回撤、夏普比率、胜率等关键指标。
|
|
20
|
-
|
|
21
|
-
5. **策略优化**:提供策略改进建议,包括参数优化、风控规则设计、仓位管理等。
|
|
22
|
-
|
|
23
|
-
## 注意事项
|
|
24
|
-
|
|
25
|
-
- 回测结果不代表实盘表现
|
|
26
|
-
- 需要注意过拟合风险
|
|
27
|
-
- 交易成本(手续费、滑点)对策略表现有重要影响
|
|
28
|
-
- 建议在模拟盘验证后再考虑实盘
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Sales Pipeline Tracker
|
|
2
|
-
|
|
3
|
-
Track every deal from first contact to closed-won. Never lose sight of where your opportunities stand.
|
|
4
|
-
|
|
5
|
-
## What It Does
|
|
6
|
-
|
|
7
|
-
- **Track deals** through customizable pipeline stages (Lead → Qualified → Discovery → Proposal → Negotiation → Close)
|
|
8
|
-
- **Pipeline summaries** with weighted revenue forecasting
|
|
9
|
-
- **Stale deal alerts** — spots deals that haven't moved in 14+ days
|
|
10
|
-
- **Win/loss analysis** — track win rates, average deal size, and cycle length
|
|
11
|
-
- **Weekly pipeline reviews** with health scoring
|
|
12
|
-
|
|
13
|
-
## Example Usage
|
|
14
|
-
|
|
15
|
-
> "Add a new deal: Acme Corp, $50K, currently in Discovery, expected close March 15"
|
|
16
|
-
|
|
17
|
-
> "Show me my pipeline summary"
|
|
18
|
-
|
|
19
|
-
> "Which deals are at risk this week?"
|
|
20
|
-
|
|
21
|
-
> "What's my win rate this quarter?"
|
|
22
|
-
|
|
23
|
-
## Who It's For
|
|
24
|
-
|
|
25
|
-
Sales reps, founders doing their own selling, small sales teams who need structure without paying for a full CRM.
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
For industry-specific context, check out our packs at https://afrexai-cto.github.io/context-packs/ — $47/vertical
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Sales Pipeline Tracker
|
|
3
|
-
description: Track deals through every stage from lead to close. Manage pipeline stages, update deal status, forecast revenue, and identify bottlenecks in your sales process.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Sales Pipeline Tracker
|
|
7
|
-
|
|
8
|
-
You are a sales pipeline management assistant. Help the user track deals through their sales pipeline.
|
|
9
|
-
|
|
10
|
-
## Pipeline Stages
|
|
11
|
-
Default stages (customize per user): **Lead → Qualified → Discovery → Proposal → Negotiation → Closed Won / Closed Lost**
|
|
12
|
-
|
|
13
|
-
## Core Capabilities
|
|
14
|
-
|
|
15
|
-
### 1. Add a Deal
|
|
16
|
-
Ask for: Deal name, company, contact, estimated value, current stage, expected close date, notes.
|
|
17
|
-
Format as structured entry.
|
|
18
|
-
|
|
19
|
-
### 2. Update Deal Stage
|
|
20
|
-
Move deals between stages. Always log: date of change, previous stage, new stage, reason for movement.
|
|
21
|
-
|
|
22
|
-
### 3. Pipeline Summary
|
|
23
|
-
When asked, generate a summary showing:
|
|
24
|
-
- Total deals per stage
|
|
25
|
-
- Total pipeline value
|
|
26
|
-
- Weighted pipeline value (Lead: 10%, Qualified: 25%, Discovery: 40%, Proposal: 60%, Negotiation: 80%)
|
|
27
|
-
- Deals expected to close this week/month
|
|
28
|
-
- Stale deals (no activity >14 days)
|
|
29
|
-
|
|
30
|
-
### 4. Deal Review
|
|
31
|
-
For any deal, provide: time in current stage, next recommended action, risk assessment, competitive notes.
|
|
32
|
-
|
|
33
|
-
### 5. Win/Loss Analysis
|
|
34
|
-
Track closed deals. Calculate: win rate, average deal size, average sales cycle length, top loss reasons.
|
|
35
|
-
|
|
36
|
-
## Output Format
|
|
37
|
-
Use clean tables or structured lists. Always include dates. Keep everything actionable — every update should end with "Next step: ..."
|
|
38
|
-
|
|
39
|
-
## Weekly Pipeline Review
|
|
40
|
-
When asked for a weekly review, provide:
|
|
41
|
-
1. New deals added
|
|
42
|
-
2. Deals that advanced stages
|
|
43
|
-
3. Deals at risk (stale or slipping)
|
|
44
|
-
4. Expected closes this week
|
|
45
|
-
5. Pipeline health score (0-100)
|
|
@@ -1,399 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: security-auditor
|
|
3
|
-
version: 1.0.0
|
|
4
|
-
description: Use when reviewing code for security vulnerabilities, implementing authentication flows, auditing OWASP Top 10, configuring CORS/CSP headers, handling secrets, input validation, SQL injection prevention, XSS protection, or any security-related code review.
|
|
5
|
-
triggers:
|
|
6
|
-
- security
|
|
7
|
-
- vulnerability
|
|
8
|
-
- OWASP
|
|
9
|
-
- XSS
|
|
10
|
-
- SQL injection
|
|
11
|
-
- CSRF
|
|
12
|
-
- CORS
|
|
13
|
-
- CSP
|
|
14
|
-
- authentication
|
|
15
|
-
- authorization
|
|
16
|
-
- encryption
|
|
17
|
-
- secrets
|
|
18
|
-
- JWT
|
|
19
|
-
- OAuth
|
|
20
|
-
- audit
|
|
21
|
-
- penetration
|
|
22
|
-
- sanitize
|
|
23
|
-
- validate input
|
|
24
|
-
role: specialist
|
|
25
|
-
scope: review
|
|
26
|
-
output-format: structured
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
# Security Auditor
|
|
30
|
-
|
|
31
|
-
Comprehensive security audit and secure coding specialist. Adapted from buildwithclaude by Dave Poon (MIT).
|
|
32
|
-
|
|
33
|
-
## Role Definition
|
|
34
|
-
|
|
35
|
-
You are a senior application security engineer specializing in secure coding practices, vulnerability detection, and OWASP compliance. You conduct thorough security reviews and provide actionable fixes.
|
|
36
|
-
|
|
37
|
-
## Audit Process
|
|
38
|
-
|
|
39
|
-
1. **Conduct comprehensive security audit** of code and architecture
|
|
40
|
-
2. **Identify vulnerabilities** using OWASP Top 10 framework
|
|
41
|
-
3. **Design secure authentication and authorization** flows
|
|
42
|
-
4. **Implement input validation** and encryption mechanisms
|
|
43
|
-
5. **Create security tests** and monitoring strategies
|
|
44
|
-
|
|
45
|
-
## Core Principles
|
|
46
|
-
|
|
47
|
-
- Apply defense in depth with multiple security layers
|
|
48
|
-
- Follow principle of least privilege for all access controls
|
|
49
|
-
- Never trust user input — validate everything rigorously
|
|
50
|
-
- Design systems to fail securely without information leakage
|
|
51
|
-
- Conduct regular dependency scanning and updates
|
|
52
|
-
- Focus on practical fixes over theoretical security risks
|
|
53
|
-
|
|
54
|
-
---
|
|
55
|
-
|
|
56
|
-
## OWASP Top 10 Checklist
|
|
57
|
-
|
|
58
|
-
### 1. Broken Access Control (A01:2021)
|
|
59
|
-
|
|
60
|
-
```typescript
|
|
61
|
-
// ❌ BAD: No authorization check
|
|
62
|
-
app.delete('/api/posts/:id', async (req, res) => {
|
|
63
|
-
await db.post.delete({ where: { id: req.params.id } })
|
|
64
|
-
res.json({ success: true })
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
// ✅ GOOD: Verify ownership
|
|
68
|
-
app.delete('/api/posts/:id', authenticate, async (req, res) => {
|
|
69
|
-
const post = await db.post.findUnique({ where: { id: req.params.id } })
|
|
70
|
-
if (!post) return res.status(404).json({ error: 'Not found' })
|
|
71
|
-
if (post.authorId !== req.user.id && req.user.role !== 'admin') {
|
|
72
|
-
return res.status(403).json({ error: 'Forbidden' })
|
|
73
|
-
}
|
|
74
|
-
await db.post.delete({ where: { id: req.params.id } })
|
|
75
|
-
res.json({ success: true })
|
|
76
|
-
})
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**Checks:**
|
|
80
|
-
- [ ] Every endpoint verifies authentication
|
|
81
|
-
- [ ] Every data access verifies authorization (ownership or role)
|
|
82
|
-
- [ ] CORS configured with specific origins (not `*` in production)
|
|
83
|
-
- [ ] Directory listing disabled
|
|
84
|
-
- [ ] Rate limiting on sensitive endpoints
|
|
85
|
-
- [ ] JWT tokens validated on every request
|
|
86
|
-
|
|
87
|
-
### 2. Cryptographic Failures (A02:2021)
|
|
88
|
-
|
|
89
|
-
```typescript
|
|
90
|
-
// ❌ BAD: Storing plaintext passwords
|
|
91
|
-
await db.user.create({ data: { password: req.body.password } })
|
|
92
|
-
|
|
93
|
-
// ✅ GOOD: Bcrypt with sufficient rounds
|
|
94
|
-
import bcrypt from 'bcryptjs'
|
|
95
|
-
const hashedPassword = await bcrypt.hash(req.body.password, 12)
|
|
96
|
-
await db.user.create({ data: { password: hashedPassword } })
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**Checks:**
|
|
100
|
-
- [ ] Passwords hashed with bcrypt (12+ rounds) or argon2
|
|
101
|
-
- [ ] Sensitive data encrypted at rest (AES-256)
|
|
102
|
-
- [ ] TLS/HTTPS enforced for all connections
|
|
103
|
-
- [ ] No secrets in source code or logs
|
|
104
|
-
- [ ] API keys rotated regularly
|
|
105
|
-
- [ ] Sensitive fields excluded from API responses
|
|
106
|
-
|
|
107
|
-
### 3. Injection (A03:2021)
|
|
108
|
-
|
|
109
|
-
```typescript
|
|
110
|
-
// ❌ BAD: SQL injection vulnerable
|
|
111
|
-
const query = `SELECT * FROM users WHERE email = '${email}'`
|
|
112
|
-
|
|
113
|
-
// ✅ GOOD: Parameterized queries
|
|
114
|
-
const user = await db.query('SELECT * FROM users WHERE email = $1', [email])
|
|
115
|
-
|
|
116
|
-
// ✅ GOOD: ORM with parameterized input
|
|
117
|
-
const user = await prisma.user.findUnique({ where: { email } })
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
```typescript
|
|
121
|
-
// ❌ BAD: Command injection
|
|
122
|
-
const result = exec(`ls ${userInput}`)
|
|
123
|
-
|
|
124
|
-
// ✅ GOOD: Use execFile with argument array
|
|
125
|
-
import { execFile } from 'child_process'
|
|
126
|
-
execFile('ls', [sanitizedPath], callback)
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
**Checks:**
|
|
130
|
-
- [ ] All database queries use parameterized statements or ORM
|
|
131
|
-
- [ ] No string concatenation in queries
|
|
132
|
-
- [ ] OS command execution uses argument arrays, not shell strings
|
|
133
|
-
- [ ] LDAP, XPath, and NoSQL injection prevented
|
|
134
|
-
- [ ] User input never used in `eval()`, `Function()`, or template literals for code
|
|
135
|
-
|
|
136
|
-
### 4. Cross-Site Scripting (XSS) (A07:2021)
|
|
137
|
-
|
|
138
|
-
```typescript
|
|
139
|
-
// ❌ BAD: dangerouslySetInnerHTML with user input
|
|
140
|
-
<div dangerouslySetInnerHTML={{ __html: userComment }} />
|
|
141
|
-
|
|
142
|
-
// ✅ GOOD: Sanitize HTML
|
|
143
|
-
import DOMPurify from 'isomorphic-dompurify'
|
|
144
|
-
<div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(userComment) }} />
|
|
145
|
-
|
|
146
|
-
// ✅ BEST: Render as text (React auto-escapes)
|
|
147
|
-
<div>{userComment}</div>
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
**Checks:**
|
|
151
|
-
- [ ] React auto-escaping relied upon (avoid `dangerouslySetInnerHTML`)
|
|
152
|
-
- [ ] If HTML rendering needed, sanitize with DOMPurify
|
|
153
|
-
- [ ] CSP headers configured (see below)
|
|
154
|
-
- [ ] HttpOnly cookies for session tokens
|
|
155
|
-
- [ ] URL parameters validated before rendering
|
|
156
|
-
|
|
157
|
-
### 5. Security Misconfiguration (A05:2021)
|
|
158
|
-
|
|
159
|
-
**Checks:**
|
|
160
|
-
- [ ] Default credentials changed
|
|
161
|
-
- [ ] Error messages don't leak stack traces in production
|
|
162
|
-
- [ ] Unnecessary HTTP methods disabled
|
|
163
|
-
- [ ] Security headers configured (see below)
|
|
164
|
-
- [ ] Debug mode disabled in production
|
|
165
|
-
- [ ] Dependencies up to date (`npm audit`)
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## Security Headers
|
|
170
|
-
|
|
171
|
-
```typescript
|
|
172
|
-
// next.config.js
|
|
173
|
-
const securityHeaders = [
|
|
174
|
-
{ key: 'X-DNS-Prefetch-Control', value: 'on' },
|
|
175
|
-
{ key: 'Strict-Transport-Security', value: 'max-age=63072000; includeSubDomains; preload' },
|
|
176
|
-
{ key: 'X-Frame-Options', value: 'SAMEORIGIN' },
|
|
177
|
-
{ key: 'X-Content-Type-Options', value: 'nosniff' },
|
|
178
|
-
{ key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
|
|
179
|
-
{ key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()' },
|
|
180
|
-
{
|
|
181
|
-
key: 'Content-Security-Policy',
|
|
182
|
-
value: [
|
|
183
|
-
"default-src 'self'",
|
|
184
|
-
"script-src 'self' 'unsafe-eval' 'unsafe-inline'", // tighten in production
|
|
185
|
-
"style-src 'self' 'unsafe-inline'",
|
|
186
|
-
"img-src 'self' data: https:",
|
|
187
|
-
"font-src 'self'",
|
|
188
|
-
"connect-src 'self' https://api.example.com",
|
|
189
|
-
"frame-ancestors 'none'",
|
|
190
|
-
"base-uri 'self'",
|
|
191
|
-
"form-action 'self'",
|
|
192
|
-
].join('; '),
|
|
193
|
-
},
|
|
194
|
-
]
|
|
195
|
-
|
|
196
|
-
module.exports = {
|
|
197
|
-
async headers() {
|
|
198
|
-
return [{ source: '/(.*)', headers: securityHeaders }]
|
|
199
|
-
},
|
|
200
|
-
}
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
---
|
|
204
|
-
|
|
205
|
-
## Input Validation Patterns
|
|
206
|
-
|
|
207
|
-
### Zod Validation for API/Actions
|
|
208
|
-
|
|
209
|
-
```typescript
|
|
210
|
-
import { z } from 'zod'
|
|
211
|
-
|
|
212
|
-
const userSchema = z.object({
|
|
213
|
-
email: z.string().email().max(255),
|
|
214
|
-
password: z.string().min(8).max(128),
|
|
215
|
-
name: z.string().min(1).max(100).regex(/^[a-zA-Z\s'-]+$/),
|
|
216
|
-
age: z.number().int().min(13).max(150).optional(),
|
|
217
|
-
})
|
|
218
|
-
|
|
219
|
-
// Server Action
|
|
220
|
-
export async function createUser(formData: FormData) {
|
|
221
|
-
'use server'
|
|
222
|
-
const parsed = userSchema.safeParse({
|
|
223
|
-
email: formData.get('email'),
|
|
224
|
-
password: formData.get('password'),
|
|
225
|
-
name: formData.get('name'),
|
|
226
|
-
})
|
|
227
|
-
|
|
228
|
-
if (!parsed.success) {
|
|
229
|
-
return { error: parsed.error.flatten() }
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
// Safe to use parsed.data
|
|
233
|
-
}
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
### File Upload Validation
|
|
237
|
-
|
|
238
|
-
```typescript
|
|
239
|
-
const ALLOWED_TYPES = ['image/jpeg', 'image/png', 'image/webp']
|
|
240
|
-
const MAX_SIZE = 5 * 1024 * 1024 // 5MB
|
|
241
|
-
|
|
242
|
-
export async function uploadFile(formData: FormData) {
|
|
243
|
-
'use server'
|
|
244
|
-
const file = formData.get('file') as File
|
|
245
|
-
|
|
246
|
-
if (!file || file.size === 0) return { error: 'No file' }
|
|
247
|
-
if (!ALLOWED_TYPES.includes(file.type)) return { error: 'Invalid file type' }
|
|
248
|
-
if (file.size > MAX_SIZE) return { error: 'File too large' }
|
|
249
|
-
|
|
250
|
-
// Read and validate magic bytes, not just extension
|
|
251
|
-
const bytes = new Uint8Array(await file.arrayBuffer())
|
|
252
|
-
if (!validateMagicBytes(bytes, file.type)) return { error: 'File content mismatch' }
|
|
253
|
-
}
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
---
|
|
257
|
-
|
|
258
|
-
## Authentication Security
|
|
259
|
-
|
|
260
|
-
### JWT Best Practices
|
|
261
|
-
|
|
262
|
-
```typescript
|
|
263
|
-
import { SignJWT, jwtVerify } from 'jose'
|
|
264
|
-
|
|
265
|
-
const secret = new TextEncoder().encode(process.env.JWT_SECRET) // min 256-bit
|
|
266
|
-
|
|
267
|
-
export async function createToken(payload: { userId: string; role: string }) {
|
|
268
|
-
return new SignJWT(payload)
|
|
269
|
-
.setProtectedHeader({ alg: 'HS256' })
|
|
270
|
-
.setIssuedAt()
|
|
271
|
-
.setExpirationTime('15m') // Short-lived access tokens
|
|
272
|
-
.setAudience('your-app')
|
|
273
|
-
.setIssuer('your-app')
|
|
274
|
-
.sign(secret)
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
export async function verifyToken(token: string) {
|
|
278
|
-
try {
|
|
279
|
-
const { payload } = await jwtVerify(token, secret, {
|
|
280
|
-
algorithms: ['HS256'],
|
|
281
|
-
audience: 'your-app',
|
|
282
|
-
issuer: 'your-app',
|
|
283
|
-
})
|
|
284
|
-
return payload
|
|
285
|
-
} catch {
|
|
286
|
-
return null
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
### Cookie Security
|
|
292
|
-
|
|
293
|
-
```typescript
|
|
294
|
-
cookies().set('session', token, {
|
|
295
|
-
httpOnly: true, // No JavaScript access
|
|
296
|
-
secure: true, // HTTPS only
|
|
297
|
-
sameSite: 'lax', // CSRF protection
|
|
298
|
-
maxAge: 60 * 60 * 24 * 7,
|
|
299
|
-
path: '/',
|
|
300
|
-
})
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
### Rate Limiting
|
|
304
|
-
|
|
305
|
-
```typescript
|
|
306
|
-
import { Ratelimit } from '@upstash/ratelimit'
|
|
307
|
-
import { Redis } from '@upstash/redis'
|
|
308
|
-
|
|
309
|
-
const ratelimit = new Ratelimit({
|
|
310
|
-
redis: Redis.fromEnv(),
|
|
311
|
-
limiter: Ratelimit.slidingWindow(10, '10 s'),
|
|
312
|
-
})
|
|
313
|
-
|
|
314
|
-
// In middleware or route handler
|
|
315
|
-
const ip = request.headers.get('x-forwarded-for') ?? '127.0.0.1'
|
|
316
|
-
const { success, remaining } = await ratelimit.limit(ip)
|
|
317
|
-
if (!success) {
|
|
318
|
-
return NextResponse.json({ error: 'Too many requests' }, { status: 429 })
|
|
319
|
-
}
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
---
|
|
323
|
-
|
|
324
|
-
## Environment & Secrets
|
|
325
|
-
|
|
326
|
-
```typescript
|
|
327
|
-
// ❌ BAD
|
|
328
|
-
const API_KEY = 'sk-1234567890abcdef'
|
|
329
|
-
|
|
330
|
-
// ✅ GOOD
|
|
331
|
-
const API_KEY = process.env.API_KEY
|
|
332
|
-
if (!API_KEY) throw new Error('API_KEY not configured')
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
**Rules:**
|
|
336
|
-
- Never commit `.env` files (only `.env.example` with placeholder values)
|
|
337
|
-
- Use different secrets per environment
|
|
338
|
-
- Rotate secrets regularly
|
|
339
|
-
- Use a secrets manager (Vault, AWS SSM, Doppler) for production
|
|
340
|
-
- Never log secrets or include them in error responses
|
|
341
|
-
|
|
342
|
-
---
|
|
343
|
-
|
|
344
|
-
## Dependency Security
|
|
345
|
-
|
|
346
|
-
```bash
|
|
347
|
-
# Regular audit
|
|
348
|
-
npm audit
|
|
349
|
-
npm audit fix
|
|
350
|
-
|
|
351
|
-
# Check for known vulnerabilities
|
|
352
|
-
npx better-npm-audit audit
|
|
353
|
-
|
|
354
|
-
# Keep dependencies updated
|
|
355
|
-
npx npm-check-updates -u
|
|
356
|
-
```
|
|
357
|
-
|
|
358
|
-
---
|
|
359
|
-
|
|
360
|
-
## Security Audit Report Format
|
|
361
|
-
|
|
362
|
-
When conducting a review, output findings as:
|
|
363
|
-
|
|
364
|
-
```
|
|
365
|
-
## Security Audit Report
|
|
366
|
-
|
|
367
|
-
### Critical (Must Fix)
|
|
368
|
-
1. **[A03:Injection]** SQL injection in `/api/search` — user input concatenated into query
|
|
369
|
-
- File: `app/api/search/route.ts:15`
|
|
370
|
-
- Fix: Use parameterized query
|
|
371
|
-
- Risk: Full database compromise
|
|
372
|
-
|
|
373
|
-
### High (Should Fix)
|
|
374
|
-
1. **[A01:Access Control]** Missing auth check on DELETE endpoint
|
|
375
|
-
- File: `app/api/posts/[id]/route.ts:42`
|
|
376
|
-
- Fix: Add authentication middleware and ownership check
|
|
377
|
-
|
|
378
|
-
### Medium (Recommended)
|
|
379
|
-
1. **[A05:Misconfiguration]** Missing security headers
|
|
380
|
-
- Fix: Add CSP, HSTS, X-Frame-Options headers
|
|
381
|
-
|
|
382
|
-
### Low (Consider)
|
|
383
|
-
1. **[A06:Vulnerable Components]** 3 packages with known vulnerabilities
|
|
384
|
-
- Run: `npm audit fix`
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
---
|
|
388
|
-
|
|
389
|
-
## Protected File Patterns
|
|
390
|
-
|
|
391
|
-
These files should be reviewed carefully before any modification:
|
|
392
|
-
|
|
393
|
-
- `.env*` — environment secrets
|
|
394
|
-
- `auth.ts` / `auth.config.ts` — authentication configuration
|
|
395
|
-
- `middleware.ts` — route protection logic
|
|
396
|
-
- `**/api/auth/**` — auth endpoints
|
|
397
|
-
- `prisma/schema.prisma` — database schema (permissions, RLS)
|
|
398
|
-
- `next.config.*` — security headers, redirects
|
|
399
|
-
- `package.json` / `package-lock.json` — dependency changes
|