@su-record/vibe 2.16.3 → 3.0.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/.env.example +15 -0
- package/CLAUDE.md +8 -8
- package/README.en.md +46 -29
- package/README.md +41 -24
- package/agents/acceptance-tester.md +56 -0
- package/agents/architect.md +25 -67
- package/agents/build-error-resolver.md +28 -97
- package/agents/code-reviewer.md +89 -0
- package/agents/diagrammer.md +34 -165
- package/agents/documenter.md +43 -0
- package/agents/e2e-tester.md +46 -277
- package/agents/event/event-ops.md +54 -77
- package/agents/event/event-planner.md +63 -0
- package/agents/figma/figma-engineer.md +76 -0
- package/agents/implementer.md +26 -41
- package/agents/security-reviewer.md +56 -0
- package/agents/tester.md +37 -33
- package/agents/ui/design-reviewer.md +62 -0
- package/agents/ui/design-system-gen.md +63 -0
- package/dist/__tests__/agent-model-sync.test.d.ts +2 -0
- package/dist/__tests__/agent-model-sync.test.d.ts.map +1 -0
- package/dist/__tests__/agent-model-sync.test.js +71 -0
- package/dist/__tests__/agent-model-sync.test.js.map +1 -0
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +8 -1
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +2 -0
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/llm.d.ts +11 -0
- package/dist/cli/commands/llm.d.ts.map +1 -0
- package/dist/cli/commands/llm.js +62 -0
- package/dist/cli/commands/llm.js.map +1 -0
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +8 -10
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +35 -1
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +59 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/config.d.ts.map +1 -1
- package/dist/cli/llm/config.js +7 -0
- package/dist/cli/llm/config.js.map +1 -1
- package/dist/cli/llm/index.d.ts +1 -0
- package/dist/cli/llm/index.d.ts.map +1 -1
- package/dist/cli/llm/index.js +1 -0
- package/dist/cli/llm/index.js.map +1 -1
- package/dist/cli/llm/model-refresh.d.ts +29 -0
- package/dist/cli/llm/model-refresh.d.ts.map +1 -0
- package/dist/cli/llm/model-refresh.js +139 -0
- package/dist/cli/llm/model-refresh.js.map +1 -0
- package/dist/cli/llm/zai-commands.d.ts +15 -0
- package/dist/cli/llm/zai-commands.d.ts.map +1 -0
- package/dist/cli/llm/zai-commands.js +64 -0
- package/dist/cli/llm/zai-commands.js.map +1 -0
- package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/claude-agents.js +16 -77
- package/dist/cli/postinstall/claude-agents.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +81 -296
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/cursor-agents.d.ts +5 -0
- package/dist/cli/postinstall/cursor-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/cursor-agents.js +26 -68
- package/dist/cli/postinstall/cursor-agents.js.map +1 -1
- package/dist/cli/postinstall/cursor-skills.d.ts.map +1 -1
- package/dist/cli/postinstall/cursor-skills.js +26 -30
- package/dist/cli/postinstall/cursor-skills.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +0 -2
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/setup/Provisioner.d.ts.map +1 -1
- package/dist/cli/setup/Provisioner.js +19 -21
- package/dist/cli/setup/Provisioner.js.map +1 -1
- package/dist/cli/types.d.ts +15 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/utils.d.ts +4 -1
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +4 -1
- package/dist/cli/utils.js.map +1 -1
- package/dist/infra/lib/FrameworkDetector.js +4 -4
- package/dist/infra/lib/FrameworkDetector.js.map +1 -1
- package/dist/infra/lib/OrchestrateWorkflow.js +2 -2
- package/dist/infra/lib/OrchestrateWorkflow.js.map +1 -1
- package/dist/infra/lib/browser/launch.js +1 -1
- package/dist/infra/lib/browser/launch.js.map +1 -1
- package/dist/infra/lib/browser/types.d.ts +1 -1
- package/dist/infra/lib/browser/types.js +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.d.ts +2 -0
- package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.js +6 -0
- package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
- package/dist/infra/lib/constants.d.ts +1 -1
- package/dist/infra/lib/constants.d.ts.map +1 -1
- package/dist/infra/lib/constants.js +4 -5
- package/dist/infra/lib/constants.js.map +1 -1
- package/dist/infra/lib/evolution/__tests__/integration.test.js +7 -7
- package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
- package/dist/infra/lib/llm-availability.d.ts +4 -0
- package/dist/infra/lib/llm-availability.d.ts.map +1 -1
- package/dist/infra/lib/llm-availability.js +9 -1
- package/dist/infra/lib/llm-availability.js.map +1 -1
- package/dist/infra/lib/memory/index.d.ts +0 -2
- package/dist/infra/lib/memory/index.d.ts.map +1 -1
- package/dist/infra/lib/memory/index.js +0 -2
- package/dist/infra/lib/memory/index.js.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
- package/dist/infra/lib/zai/client.d.ts +30 -0
- package/dist/infra/lib/zai/client.d.ts.map +1 -0
- package/dist/infra/lib/zai/client.js +124 -0
- package/dist/infra/lib/zai/client.js.map +1 -0
- package/dist/infra/lib/zai/index.d.ts +11 -0
- package/dist/infra/lib/zai/index.d.ts.map +1 -0
- package/dist/infra/lib/zai/index.js +10 -0
- package/dist/infra/lib/zai/index.js.map +1 -0
- package/dist/infra/lib/zai/orchestration.d.ts +15 -0
- package/dist/infra/lib/zai/orchestration.d.ts.map +1 -0
- package/dist/infra/lib/zai/orchestration.js +54 -0
- package/dist/infra/lib/zai/orchestration.js.map +1 -0
- package/dist/infra/lib/zai/types.d.ts +40 -0
- package/dist/infra/lib/zai/types.d.ts.map +1 -0
- package/dist/infra/lib/zai/types.js +5 -0
- package/dist/infra/lib/zai/types.js.map +1 -0
- package/dist/infra/orchestrator/SmartRouter.d.ts.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.js +16 -34
- package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
- package/dist/infra/orchestrator/index.d.ts +1 -0
- package/dist/infra/orchestrator/index.d.ts.map +1 -1
- package/dist/infra/orchestrator/index.js +11 -9
- package/dist/infra/orchestrator/index.js.map +1 -1
- package/dist/infra/orchestrator/types.d.ts +32 -9
- package/dist/infra/orchestrator/types.d.ts.map +1 -1
- package/dist/infra/orchestrator/types.js +68 -37
- package/dist/infra/orchestrator/types.js.map +1 -1
- package/dist/infra/orchestrator/types.test.d.ts +2 -0
- package/dist/infra/orchestrator/types.test.d.ts.map +1 -0
- package/dist/infra/orchestrator/types.test.js +57 -0
- package/dist/infra/orchestrator/types.test.js.map +1 -0
- package/dist/tools/index.d.ts +0 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory/autoSaveContext.d.ts +0 -1
- package/dist/tools/memory/autoSaveContext.d.ts.map +1 -1
- package/dist/tools/memory/autoSaveContext.js +13 -27
- package/dist/tools/memory/autoSaveContext.js.map +1 -1
- package/hooks/scripts/__tests__/code-check-detectors.test.js +2 -2
- package/hooks/scripts/__tests__/run-ledger.test.js +1 -1
- package/hooks/scripts/__tests__/scope-from-spec.test.js +12 -12
- package/hooks/scripts/__tests__/step-counter.test.js +1 -1
- package/hooks/scripts/code-check.js +16 -203
- package/hooks/scripts/context-save.js +0 -11
- package/hooks/scripts/lib/scope-from-spec.js +9 -6
- package/hooks/scripts/llm-orchestrate.js +49 -0
- package/hooks/scripts/post-edit-dispatcher.js +1 -1
- package/hooks/scripts/prompt-dispatcher.js +7 -18
- package/hooks/scripts/session-start.js +25 -35
- package/package.json +4 -4
- package/skills/agents-md/SKILL.md +62 -15
- package/skills/arch-guard/SKILL.md +1 -1
- package/skills/brand-assets/SKILL.md +2 -2
- package/skills/capability-loop/SKILL.md +1 -1
- package/skills/chub-usage/SKILL.md +1 -1
- package/skills/commerce-patterns/SKILL.md +2 -2
- package/skills/commit-push-pr/SKILL.md +0 -1
- package/skills/context7-usage/SKILL.md +1 -1
- package/skills/create-prd/agents/edge-case-finder.md +4 -4
- package/skills/create-prd/agents/prioritizer.md +4 -4
- package/skills/create-prd/agents/requirements-writer.md +3 -3
- package/skills/create-prd/agents/researcher.md +3 -3
- package/skills/create-prd/agents/reviewer.md +3 -3
- package/skills/create-prd/orchestrator.md +2 -0
- package/skills/design-refine/SKILL.md +140 -0
- package/skills/{design-polish → design-refine}/templates/polish-report.md +1 -1
- package/skills/{design-normalize → design-refine}/templates/token-audit.md +3 -3
- package/skills/design-review/SKILL.md +143 -0
- package/skills/{design-audit → design-review}/agents/a11y-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/performance-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/responsive-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/slop-detector.md +1 -1
- package/skills/{design-audit → design-review}/frameworks/core-web-vitals.md +1 -1
- package/skills/{design-audit → design-review}/frameworks/wcag-checklist.md +1 -1
- package/skills/{design-audit → design-review}/orchestrator.md +5 -3
- package/skills/{design-critique → design-review}/templates/critique-report.md +3 -3
- package/skills/{design-audit → design-review}/templates/report.md +3 -3
- package/skills/design-teach/SKILL.md +11 -11
- package/skills/docs/SKILL.md +14 -16
- package/skills/e2e-commerce/SKILL.md +1 -1
- package/skills/event-comms/SKILL.md +1 -1
- package/skills/event-ops/SKILL.md +2 -2
- package/skills/event-planning/SKILL.md +1 -1
- package/skills/exec-plan/SKILL.md +2 -2
- package/skills/exec-plan/orchestrator.md +2 -0
- package/skills/figma/SKILL.md +240 -148
- package/skills/figma/rubrics/css-mapping.md +125 -0
- package/skills/git-worktree/SKILL.md +1 -1
- package/skills/handoff/SKILL.md +1 -1
- package/skills/parallel-research/SKILL.md +14 -28
- package/skills/parallel-research/orchestrator.md +2 -0
- package/skills/priority-todos/SKILL.md +1 -1
- package/skills/regress/SKILL.md +11 -0
- package/skills/restraint/SKILL.md +72 -0
- package/skills/seo-checklist/SKILL.md +2 -2
- package/skills/spec/SKILL.md +65 -836
- package/skills/test/SKILL.md +3 -3
- package/skills/tool-fallback/SKILL.md +2 -2
- package/skills/vercel-react-best-practices/SKILL.md +1 -1
- package/skills/vibe/SKILL.md +20 -35
- package/skills/vibe.analyze/SKILL.md +7 -9
- package/skills/vibe.docs/SKILL.md +1 -1
- package/skills/vibe.event/SKILL.md +27 -27
- package/skills/vibe.figma/SKILL.md +14 -18
- package/skills/vibe.harness/SKILL.md +5 -5
- package/skills/vibe.llm/SKILL.md +50 -0
- package/skills/vibe.reason/SKILL.md +0 -2
- package/skills/vibe.review/SKILL.md +45 -49
- package/skills/vibe.run/SKILL.md +2 -5
- package/skills/vibe.run/references/parallel-agents.md +33 -98
- package/skills/vibe.spec/SKILL.md +38 -535
- package/skills/vibe.utils/SKILL.md +3 -3
- package/skills/vibe.verify/SKILL.md +70 -542
- package/skills/video-production/SKILL.md +1 -1
- package/vibe/rules/orchestrator-contract.md +57 -0
- package/vibe/rules/quality/performance.md +1 -1
- package/vibe/templates/claudemd-template.md +1 -1
- package/vibe/templates/spec-template.md +35 -185
- package/agents/architect-low.md +0 -41
- package/agents/architect-medium.md +0 -59
- package/agents/compounder.md +0 -261
- package/agents/docs/api-documenter.md +0 -99
- package/agents/docs/changelog-writer.md +0 -93
- package/agents/event/event-comms.md +0 -78
- package/agents/event/event-content.md +0 -68
- package/agents/event/event-image.md +0 -95
- package/agents/event/event-scheduler.md +0 -69
- package/agents/event/event-speaker.md +0 -86
- package/agents/explorer-low.md +0 -42
- package/agents/explorer-medium.md +0 -59
- package/agents/explorer.md +0 -48
- package/agents/figma/figma-analyst.md +0 -52
- package/agents/figma/figma-architect.md +0 -112
- package/agents/figma/figma-auditor.md +0 -82
- package/agents/figma/figma-builder.md +0 -100
- package/agents/implementer-low.md +0 -43
- package/agents/implementer-medium.md +0 -52
- package/agents/junior-mentor.md +0 -141
- package/agents/planning/requirements-analyst.md +0 -84
- package/agents/planning/ux-advisor.md +0 -83
- package/agents/qa/acceptance-tester.md +0 -86
- package/agents/qa/edge-case-finder.md +0 -93
- package/agents/qa/qa-coordinator.md +0 -131
- package/agents/refactor-cleaner.md +0 -143
- package/agents/research/best-practices.md +0 -199
- package/agents/research/codebase-patterns.md +0 -157
- package/agents/research/framework-docs.md +0 -188
- package/agents/research/security-advisory.md +0 -213
- package/agents/review/architecture-reviewer.md +0 -107
- package/agents/review/complexity-reviewer.md +0 -116
- package/agents/review/data-integrity-reviewer.md +0 -88
- package/agents/review/git-history-reviewer.md +0 -103
- package/agents/review/performance-reviewer.md +0 -86
- package/agents/review/python-reviewer.md +0 -150
- package/agents/review/rails-reviewer.md +0 -139
- package/agents/review/react-reviewer.md +0 -144
- package/agents/review/security-reviewer.md +0 -80
- package/agents/review/simplicity-reviewer.md +0 -140
- package/agents/review/test-coverage-reviewer.md +0 -116
- package/agents/review/typescript-reviewer.md +0 -127
- package/agents/searcher.md +0 -54
- package/agents/simplifier.md +0 -120
- package/agents/teams/debug-team.md +0 -70
- package/agents/teams/dev-team.md +0 -88
- package/agents/teams/docs-team.md +0 -80
- package/agents/teams/figma-team.md +0 -85
- package/agents/teams/fullstack-team.md +0 -83
- package/agents/teams/lite-team.md +0 -69
- package/agents/teams/migration-team.md +0 -78
- package/agents/teams/refactor-team.md +0 -94
- package/agents/teams/research-team.md +0 -86
- package/agents/teams/review-debate-team.md +0 -125
- package/agents/teams/security-team.md +0 -81
- package/agents/ui/ui-a11y-auditor.md +0 -93
- package/agents/ui/ui-antipattern-detector.md +0 -102
- package/agents/ui/ui-dataviz-advisor.md +0 -69
- package/agents/ui/ui-design-system-gen.md +0 -57
- package/agents/ui/ui-industry-analyzer.md +0 -49
- package/agents/ui/ui-layout-architect.md +0 -65
- package/agents/ui/ui-stack-implementer.md +0 -68
- package/agents/ui/ux-compliance-reviewer.md +0 -81
- package/agents/ui-previewer.md +0 -258
- package/hooks/scripts/__tests__/keyword-detector.test.js +0 -242
- package/hooks/scripts/keyword-detector.js +0 -226
- package/skills/characterization-test/SKILL.md +0 -209
- package/skills/characterization-test/agents/behavior-capturer.md +0 -50
- package/skills/characterization-test/agents/coverage-checker.md +0 -54
- package/skills/characterization-test/agents/reporter.md +0 -50
- package/skills/characterization-test/agents/test-writer.md +0 -49
- package/skills/characterization-test/rubrics/coverage-criteria.md +0 -53
- package/skills/characterization-test/templates/test-template.ts +0 -101
- package/skills/claude-md-guide/SKILL.md +0 -353
- package/skills/claude-md-guide/rubrics/anti-patterns.md +0 -88
- package/skills/design-audit/SKILL.md +0 -154
- package/skills/design-critique/SKILL.md +0 -140
- package/skills/design-distill/SKILL.md +0 -131
- package/skills/design-normalize/SKILL.md +0 -135
- package/skills/design-polish/SKILL.md +0 -132
- package/skills/figma-convert/SKILL.md +0 -236
- package/skills/figma-extract/SKILL.md +0 -242
- package/skills/interview/SKILL.md +0 -358
- package/skills/interview/checklists/api.md +0 -101
- package/skills/interview/checklists/feature.md +0 -88
- package/skills/interview/checklists/library.md +0 -95
- package/skills/interview/checklists/mobile.md +0 -89
- package/skills/interview/checklists/webapp.md +0 -97
- package/skills/interview/checklists/website.md +0 -99
- package/skills/plan/SKILL.md +0 -254
- package/skills/rob-pike/SKILL.md +0 -66
- package/skills/spec/references/askuser-examples.md +0 -57
- package/skills/spec/references/example-session.md +0 -87
- package/skills/spec/references/templates.md +0 -194
- package/skills/spec-review/SKILL.md +0 -725
- package/skills/systematic-debugging/SKILL.md +0 -142
- package/skills/techdebt/SKILL.md +0 -126
- package/skills/techdebt/agents/analyzer.md +0 -50
- package/skills/techdebt/agents/fixer.md +0 -41
- package/skills/techdebt/agents/reviewer.md +0 -47
- package/skills/techdebt/agents/scanner.md +0 -44
- package/skills/techdebt/orchestrator.md +0 -70
- package/skills/techdebt/rubrics/severity.md +0 -51
- package/skills/techdebt/scripts/scan.js +0 -90
- package/skills/techdebt/templates/report.md +0 -86
- package/skills/typescript-advanced-types/SKILL.md +0 -68
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +0 -109
- package/skills/yagni-ladder/SKILL.md +0 -90
- /package/skills/{claude-md-guide → agents-md}/templates/claude-md.md +0 -0
- /package/skills/{design-polish → design-refine}/rubrics/polish-checklist.md +0 -0
- /package/skills/{design-normalize → design-refine}/rubrics/token-naming.md +0 -0
- /package/skills/{design-distill → design-refine}/templates/design-system.md +0 -0
- /package/skills/{design-audit → design-review}/agents/scorer.md +0 -0
- /package/skills/{design-audit → design-review}/rubrics/ai-slop-patterns.md +0 -0
- /package/skills/{design-audit → design-review}/rubrics/scoring.md +0 -0
- /package/skills/{design-critique → design-review}/rubrics/ux-heuristics.md +0 -0
- /package/skills/{figma-convert → figma}/rubrics/conversion-rules.md +0 -0
- /package/skills/{figma-extract → figma}/rubrics/image-rules.md +0 -0
- /package/skills/{figma-convert → figma}/templates/component.md +0 -0
package/agents/compounder.md
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Auto-document solutions for knowledge compounding
|
|
3
|
-
argument-hint: "solution description (optional)"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /vibe.compound
|
|
7
|
-
|
|
8
|
-
**Knowledge Compounding** - Auto-document solved problems to boost future productivity
|
|
9
|
-
|
|
10
|
-
> "Each solution documented makes future problems easier to solve."
|
|
11
|
-
|
|
12
|
-
## Usage
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
/vibe.compound # Auto-detect recent solutions
|
|
16
|
-
/vibe.compound "Redis cache invalidation" # Document specific solution
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Auto-Triggers
|
|
20
|
-
|
|
21
|
-
Automatically suggested when these patterns detected:
|
|
22
|
-
- "it's fixed", "fixed", "solved", "resolved"
|
|
23
|
-
- After PR merge
|
|
24
|
-
- After `/vibe.verify` passes
|
|
25
|
-
|
|
26
|
-
## Process
|
|
27
|
-
|
|
28
|
-
### Phase 1: Solution Extraction
|
|
29
|
-
|
|
30
|
-
Parallel agents analyze the solution:
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
34
|
-
│ 🔍 PARALLEL SOLUTION ANALYSIS │
|
|
35
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
36
|
-
│ │
|
|
37
|
-
│ Task 1: problem-analyzer │
|
|
38
|
-
│ ├── Identify original problem │
|
|
39
|
-
│ ├── Symptoms and error messages │
|
|
40
|
-
│ └── Impact scope │
|
|
41
|
-
│ │
|
|
42
|
-
│ Task 2: solution-extractor │
|
|
43
|
-
│ ├── Applied fixes │
|
|
44
|
-
│ ├── Key code changes │
|
|
45
|
-
│ └── Configuration changes │
|
|
46
|
-
│ │
|
|
47
|
-
│ Task 3: root-cause-analyzer │
|
|
48
|
-
│ ├── Root cause identification │
|
|
49
|
-
│ ├── Why it happened │
|
|
50
|
-
│ └── Prevention methods │
|
|
51
|
-
│ │
|
|
52
|
-
│ Task 4: pattern-recognizer │
|
|
53
|
-
│ ├── Similar problem patterns │
|
|
54
|
-
│ ├── Related tech stack │
|
|
55
|
-
│ └── Search keywords │
|
|
56
|
-
│ │
|
|
57
|
-
│ Task 5: category-classifier │
|
|
58
|
-
│ ├── Category classification │
|
|
59
|
-
│ ├── Tag generation │
|
|
60
|
-
│ └── Related doc links │
|
|
61
|
-
│ │
|
|
62
|
-
│ Task 6: code-snippet-extractor │
|
|
63
|
-
│ ├── Before/After code │
|
|
64
|
-
│ ├── Key change highlights │
|
|
65
|
-
│ └── Copy-paste snippets │
|
|
66
|
-
│ │
|
|
67
|
-
│ Task 7: prevention-advisor │
|
|
68
|
-
│ ├── Prevention checklist │
|
|
69
|
-
│ ├── Suggested linter rules │
|
|
70
|
-
│ └── Test case suggestions │
|
|
71
|
-
│ │
|
|
72
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Phase 2: Category Classification
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
.vibe/solutions/
|
|
79
|
-
├── security/ # Security related
|
|
80
|
-
│ ├── sql-injection-prevention.md
|
|
81
|
-
│ └── xss-sanitization.md
|
|
82
|
-
├── performance/ # Performance optimization
|
|
83
|
-
│ ├── n1-query-fix.md
|
|
84
|
-
│ └── redis-cache-invalidation.md
|
|
85
|
-
├── database/ # Database related
|
|
86
|
-
│ ├── migration-rollback.md
|
|
87
|
-
│ └── deadlock-resolution.md
|
|
88
|
-
├── integration/ # External integrations
|
|
89
|
-
│ ├── stripe-webhook-retry.md
|
|
90
|
-
│ └── aws-s3-timeout.md
|
|
91
|
-
├── frontend/ # Frontend issues
|
|
92
|
-
│ ├── react-hydration-mismatch.md
|
|
93
|
-
│ └── infinite-scroll-memory.md
|
|
94
|
-
├── testing/ # Testing related
|
|
95
|
-
│ ├── flaky-test-fix.md
|
|
96
|
-
│ └── mock-timezone.md
|
|
97
|
-
└── deployment/ # Deployment issues
|
|
98
|
-
├── docker-layer-cache.md
|
|
99
|
-
└── k8s-rolling-update.md
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Phase 3: Document Generation
|
|
103
|
-
|
|
104
|
-
```markdown
|
|
105
|
-
# [Solution] Redis Cache Invalidation
|
|
106
|
-
|
|
107
|
-
## TL;DR
|
|
108
|
-
Added version suffix to Redis cache key to fix invalidation issue
|
|
109
|
-
|
|
110
|
-
## Problem
|
|
111
|
-
### Symptoms
|
|
112
|
-
- User profile shows stale data after update
|
|
113
|
-
- Refresh doesn't fix the issue
|
|
114
|
-
|
|
115
|
-
### Error/Logs
|
|
116
|
-
```
|
|
117
|
-
Cache hit: user:123 (stale data)
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Impact Scope
|
|
121
|
-
- User profile page
|
|
122
|
-
- API: GET /api/users/:id
|
|
123
|
-
|
|
124
|
-
## Root Cause
|
|
125
|
-
Cache key only used user_id, not invalidated on update
|
|
126
|
-
|
|
127
|
-
```python
|
|
128
|
-
# Before
|
|
129
|
-
cache_key = f"user:{user_id}" # No version
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
## Solution
|
|
133
|
-
### Key Change
|
|
134
|
-
Add updated_at timestamp to cache key
|
|
135
|
-
|
|
136
|
-
```python
|
|
137
|
-
# After
|
|
138
|
-
cache_key = f"user:{user_id}:v{updated_at.timestamp()}"
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### Changed Files
|
|
142
|
-
- src/services/cache.py:42
|
|
143
|
-
- src/api/users.py:78
|
|
144
|
-
|
|
145
|
-
## Prevention
|
|
146
|
-
- [ ] Always include version/timestamp in cache keys
|
|
147
|
-
- [ ] Add cache invalidation tests
|
|
148
|
-
- [ ] Linter rule: cache_key pattern check
|
|
149
|
-
|
|
150
|
-
## Related
|
|
151
|
-
- Similar issue: #234 (Session cache)
|
|
152
|
-
- Docs: docs/caching-strategy.md
|
|
153
|
-
- Tags: #redis #cache #invalidation
|
|
154
|
-
|
|
155
|
-
## Metadata
|
|
156
|
-
- Resolved: 2026-01-11
|
|
157
|
-
- Time spent: 2 hours
|
|
158
|
-
- Difficulty: Medium
|
|
159
|
-
- Reusability: High
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### Phase 4: Index Update
|
|
163
|
-
|
|
164
|
-
Auto-update `.vibe/solutions/index.md`:
|
|
165
|
-
|
|
166
|
-
```markdown
|
|
167
|
-
# Solution Index
|
|
168
|
-
|
|
169
|
-
## Recently Added
|
|
170
|
-
| Date | Category | Title | Tags |
|
|
171
|
-
|------|----------|-------|------|
|
|
172
|
-
| 2026-01-11 | performance | Redis cache invalidation | #redis #cache |
|
|
173
|
-
| 2026-01-10 | security | SQL Injection prevention | #sql #security |
|
|
174
|
-
|
|
175
|
-
## By Category
|
|
176
|
-
- **Security** (5 solutions)
|
|
177
|
-
- **Performance** (8 solutions)
|
|
178
|
-
- **Database** (4 solutions)
|
|
179
|
-
...
|
|
180
|
-
|
|
181
|
-
## Search Keywords
|
|
182
|
-
- redis → performance/redis-cache-invalidation.md
|
|
183
|
-
- n+1 → performance/n1-query-fix.md
|
|
184
|
-
- sql injection → security/sql-injection-prevention.md
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
## Auto-Suggestion
|
|
188
|
-
|
|
189
|
-
When similar problem detected:
|
|
190
|
-
|
|
191
|
-
```
|
|
192
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
193
|
-
│ 💡 Similar Solution Found! │
|
|
194
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
195
|
-
│ │
|
|
196
|
-
│ You're working on: "Cache not updating" │
|
|
197
|
-
│ │
|
|
198
|
-
│ Related solution (85% match): │
|
|
199
|
-
│ 📄 .vibe/solutions/performance/redis-cache-invalidation.md │
|
|
200
|
-
│ │
|
|
201
|
-
│ Key insight: Add version suffix to cache key │
|
|
202
|
-
│ │
|
|
203
|
-
│ Apply this solution? [Y/n] │
|
|
204
|
-
│ │
|
|
205
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## Output
|
|
209
|
-
|
|
210
|
-
```
|
|
211
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
212
|
-
│ 📚 SOLUTION DOCUMENTED │
|
|
213
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
214
|
-
│ │
|
|
215
|
-
│ ✅ Created: .vibe/solutions/performance/redis-cache-invalid... │
|
|
216
|
-
│ │
|
|
217
|
-
│ 📊 Knowledge Base Stats: │
|
|
218
|
-
│ ├── Total Solutions: 42 │
|
|
219
|
-
│ ├── This Month: 8 │
|
|
220
|
-
│ └── Most Used Category: performance │
|
|
221
|
-
│ │
|
|
222
|
-
│ 🔗 Similar solutions linked: 2 │
|
|
223
|
-
│ 🏷️ Tags: #redis #cache #invalidation #performance │
|
|
224
|
-
│ │
|
|
225
|
-
│ 💡 Prevention rules added to ~/.claude/vibe/rules/ │
|
|
226
|
-
│ │
|
|
227
|
-
│ "This solution will help future you (or teammates) save hours" │
|
|
228
|
-
│ │
|
|
229
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
## Integration with Memory
|
|
233
|
-
|
|
234
|
-
Auto-invoke `core_save_memory`:
|
|
235
|
-
|
|
236
|
-
```json
|
|
237
|
-
{
|
|
238
|
-
"type": "solution",
|
|
239
|
-
"category": "performance",
|
|
240
|
-
"title": "Redis cache invalidation",
|
|
241
|
-
"keywords": ["redis", "cache", "invalidation"],
|
|
242
|
-
"file": ".vibe/solutions/performance/redis-cache-invalidation.md"
|
|
243
|
-
}
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
## Workflow Integration
|
|
247
|
-
|
|
248
|
-
```
|
|
249
|
-
/vibe.spec → /vibe.run → /vibe.verify → /vibe.compound
|
|
250
|
-
│
|
|
251
|
-
▼
|
|
252
|
-
.vibe/solutions/
|
|
253
|
-
│
|
|
254
|
-
▼
|
|
255
|
-
Future problem?
|
|
256
|
-
Auto-suggest!
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
---
|
|
260
|
-
|
|
261
|
-
ARGUMENTS: $ARGUMENTS
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# API Documenter
|
|
2
|
-
|
|
3
|
-
<!-- API Documentation Generation Agent -->
|
|
4
|
-
|
|
5
|
-
## Role
|
|
6
|
-
|
|
7
|
-
- Analyze source code to extract API endpoints and interfaces
|
|
8
|
-
- Generate structured API documentation (request/response schemas)
|
|
9
|
-
- Identify undocumented endpoints and missing descriptions
|
|
10
|
-
- Verify error response documentation completeness
|
|
11
|
-
- Check authentication requirement documentation
|
|
12
|
-
|
|
13
|
-
## Model
|
|
14
|
-
|
|
15
|
-
**Haiku** (inherit) - Fast analysis
|
|
16
|
-
|
|
17
|
-
## CRITICAL: NO FILE CREATION
|
|
18
|
-
|
|
19
|
-
**THIS AGENT MUST NEVER CREATE FILES.**
|
|
20
|
-
|
|
21
|
-
- DO NOT use Write tool
|
|
22
|
-
- DO NOT create any files
|
|
23
|
-
- ONLY return documentation as text output
|
|
24
|
-
- Results can be used by other tools to generate files
|
|
25
|
-
|
|
26
|
-
## Checklist
|
|
27
|
-
|
|
28
|
-
### Endpoint Coverage
|
|
29
|
-
|
|
30
|
-
- [ ] All route handlers/controllers documented?
|
|
31
|
-
- [ ] HTTP method and path clearly specified?
|
|
32
|
-
- [ ] Request parameters (path, query, body) described?
|
|
33
|
-
- [ ] Response schemas for success and error cases?
|
|
34
|
-
- [ ] Authentication requirements noted?
|
|
35
|
-
|
|
36
|
-
### Schema Quality
|
|
37
|
-
|
|
38
|
-
- [ ] All fields have types and descriptions?
|
|
39
|
-
- [ ] Required vs optional fields marked?
|
|
40
|
-
- [ ] Enum values listed?
|
|
41
|
-
- [ ] Nested objects described?
|
|
42
|
-
- [ ] Array item types specified?
|
|
43
|
-
|
|
44
|
-
### Error Documentation
|
|
45
|
-
|
|
46
|
-
- [ ] All error status codes documented?
|
|
47
|
-
- [ ] Error response format specified?
|
|
48
|
-
- [ ] Common error scenarios listed?
|
|
49
|
-
- [ ] Rate limiting documented (if applicable)?
|
|
50
|
-
|
|
51
|
-
### Examples
|
|
52
|
-
|
|
53
|
-
- [ ] Request examples for each endpoint?
|
|
54
|
-
- [ ] Response examples (success + error)?
|
|
55
|
-
- [ ] cURL or fetch examples?
|
|
56
|
-
|
|
57
|
-
## Output Format
|
|
58
|
-
|
|
59
|
-
```markdown
|
|
60
|
-
## API Documentation: {feature/module name}
|
|
61
|
-
|
|
62
|
-
### Endpoints Found: {N}
|
|
63
|
-
### Undocumented: {N}
|
|
64
|
-
|
|
65
|
-
### Endpoint: {METHOD} {path}
|
|
66
|
-
|
|
67
|
-
**Authentication**: {required/optional/none}
|
|
68
|
-
|
|
69
|
-
**Parameters**:
|
|
70
|
-
| Name | In | Type | Required | Description |
|
|
71
|
-
|------|----|------|----------|-------------|
|
|
72
|
-
| id | path | string | yes | Resource identifier |
|
|
73
|
-
|
|
74
|
-
**Request Body**:
|
|
75
|
-
```json
|
|
76
|
-
{
|
|
77
|
-
"field": "type - description"
|
|
78
|
-
}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**Responses**:
|
|
82
|
-
| Status | Description |
|
|
83
|
-
|--------|-------------|
|
|
84
|
-
| 200 | Success - {description} |
|
|
85
|
-
| 400 | Bad Request - {when} |
|
|
86
|
-
| 401 | Unauthorized - {when} |
|
|
87
|
-
| 404 | Not Found - {when} |
|
|
88
|
-
|
|
89
|
-
**Example**:
|
|
90
|
-
```bash
|
|
91
|
-
curl -X {METHOD} /api/{path} \
|
|
92
|
-
-H "Authorization: Bearer {token}" \
|
|
93
|
-
-d '{"field": "value"}'
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### Missing Documentation
|
|
97
|
-
- **[DOC-001]** Endpoint {METHOD} {path} has no description
|
|
98
|
-
- **[DOC-002]** Error response {status} not documented for {endpoint}
|
|
99
|
-
```
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# Changelog Writer
|
|
2
|
-
|
|
3
|
-
<!-- Changelog Generation Agent from Git Diff -->
|
|
4
|
-
|
|
5
|
-
## Role
|
|
6
|
-
|
|
7
|
-
- Analyze git diff to generate structured changelog entries
|
|
8
|
-
- Classify changes (breaking, feature, fix, refactor, docs, chore)
|
|
9
|
-
- Identify breaking changes that need migration guides
|
|
10
|
-
- Generate user-facing descriptions (not internal implementation details)
|
|
11
|
-
- Suggest semantic version bump (major/minor/patch)
|
|
12
|
-
|
|
13
|
-
## Model
|
|
14
|
-
|
|
15
|
-
**Haiku** (inherit) - Fast analysis
|
|
16
|
-
|
|
17
|
-
## CRITICAL: NO FILE CREATION
|
|
18
|
-
|
|
19
|
-
**THIS AGENT MUST NEVER CREATE FILES.**
|
|
20
|
-
|
|
21
|
-
- DO NOT use Write tool
|
|
22
|
-
- DO NOT create any files
|
|
23
|
-
- ONLY return changelog content as text output
|
|
24
|
-
|
|
25
|
-
## Checklist
|
|
26
|
-
|
|
27
|
-
### Change Classification
|
|
28
|
-
|
|
29
|
-
- [ ] Breaking changes identified (API removal, schema change, behavior change)?
|
|
30
|
-
- [ ] New features listed with user-facing descriptions?
|
|
31
|
-
- [ ] Bug fixes described with before/after behavior?
|
|
32
|
-
- [ ] Performance improvements quantified (if measurable)?
|
|
33
|
-
- [ ] Dependency updates noted?
|
|
34
|
-
|
|
35
|
-
### Migration Impact
|
|
36
|
-
|
|
37
|
-
- [ ] Breaking changes have migration steps?
|
|
38
|
-
- [ ] Deprecated features noted with replacement?
|
|
39
|
-
- [ ] Configuration changes documented?
|
|
40
|
-
- [ ] Database migration needed?
|
|
41
|
-
|
|
42
|
-
### Quality
|
|
43
|
-
|
|
44
|
-
- [ ] Descriptions are user-facing (not implementation details)?
|
|
45
|
-
- [ ] Each entry has enough context to understand the change?
|
|
46
|
-
- [ ] Related changes grouped together?
|
|
47
|
-
- [ ] PR/issue references included (if available)?
|
|
48
|
-
|
|
49
|
-
## Input
|
|
50
|
-
|
|
51
|
-
Provide the agent with:
|
|
52
|
-
- `git diff` output (staged or between branches)
|
|
53
|
-
- `git log --oneline` for commit messages
|
|
54
|
-
- Current version number
|
|
55
|
-
|
|
56
|
-
## Output Format
|
|
57
|
-
|
|
58
|
-
```markdown
|
|
59
|
-
## Changelog Analysis
|
|
60
|
-
|
|
61
|
-
### Recommended Version Bump: {major|minor|patch}
|
|
62
|
-
Reason: {why this bump level}
|
|
63
|
-
|
|
64
|
-
### Changelog Entry
|
|
65
|
-
|
|
66
|
-
## [{new-version}] - {YYYY-MM-DD}
|
|
67
|
-
|
|
68
|
-
### Breaking Changes
|
|
69
|
-
- **{component}**: {description of breaking change}
|
|
70
|
-
- Migration: {step-by-step migration guide}
|
|
71
|
-
|
|
72
|
-
### Added
|
|
73
|
-
- {User-facing description of new feature} ({files affected})
|
|
74
|
-
- {Another feature}
|
|
75
|
-
|
|
76
|
-
### Changed
|
|
77
|
-
- {Description of behavior change}
|
|
78
|
-
|
|
79
|
-
### Fixed
|
|
80
|
-
- {Description of bug fix} - previously {old behavior}, now {new behavior}
|
|
81
|
-
|
|
82
|
-
### Performance
|
|
83
|
-
- {Description of optimization} ({metric improvement if available})
|
|
84
|
-
|
|
85
|
-
### Internal
|
|
86
|
-
- {Refactoring or internal change that doesn't affect users}
|
|
87
|
-
|
|
88
|
-
### Dependencies
|
|
89
|
-
- Updated {package} from {old} to {new}
|
|
90
|
-
|
|
91
|
-
### Notes
|
|
92
|
-
- {Any additional context for users}
|
|
93
|
-
```
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# Event Communications Agent
|
|
2
|
-
|
|
3
|
-
SMS and email coordination for community events — draft generation, test sends, and confirmation-gated actual sends.
|
|
4
|
-
|
|
5
|
-
## Role
|
|
6
|
-
|
|
7
|
-
- Generate SMS/LMS drafts using community templates
|
|
8
|
-
- Generate email drafts with mandatory BCC
|
|
9
|
-
- Coordinate test sends (Aligo testmode_yn=Y)
|
|
10
|
-
- Gate actual sends behind user confirmation
|
|
11
|
-
- Track send status per recipient
|
|
12
|
-
|
|
13
|
-
## Model
|
|
14
|
-
|
|
15
|
-
**Sonnet** — Needs careful template processing + safety checks for sends
|
|
16
|
-
|
|
17
|
-
## Usage
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
Task(model: "sonnet", prompt: "Generate D-3 confirmation SMS for MDC 12th")
|
|
21
|
-
Task(model: "sonnet", prompt: "Generate D-3 confirmation email (BCC) for webinar")
|
|
22
|
-
Task(model: "sonnet", prompt: "Test-send D-1 reminder SMS via Aligo")
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Process
|
|
26
|
-
|
|
27
|
-
### Draft Generation
|
|
28
|
-
1. Receive event details + communication type (SMS/email/both)
|
|
29
|
-
2. Select appropriate template for timing (D-7, D-3, D-1, D-Day)
|
|
30
|
-
3. Fill template with event data
|
|
31
|
-
4. Validate SMS: check byte count, no emoji, proper substitution
|
|
32
|
-
5. Validate email: confirm BCC usage
|
|
33
|
-
6. Output drafts to `output/reports/`
|
|
34
|
-
|
|
35
|
-
### Send Execution
|
|
36
|
-
1. **ALWAYS test first** — `testmode_yn=Y` for Aligo
|
|
37
|
-
2. Show user: recipient count, message preview, cost estimate
|
|
38
|
-
3. **Wait for explicit confirmation**
|
|
39
|
-
4. Execute send
|
|
40
|
-
5. Log results
|
|
41
|
-
|
|
42
|
-
## Safety Rules
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
CRITICAL:
|
|
46
|
-
- NEVER send without user confirmation
|
|
47
|
-
- ALWAYS use testmode_yn=Y first
|
|
48
|
-
- ALWAYS use BCC for email (never TO/CC for multiple recipients)
|
|
49
|
-
- NEVER use emoji in SMS (EUC-KR encoding breaks)
|
|
50
|
-
- SMS >90 bytes → auto-switch to LMS
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
## API Configuration
|
|
54
|
-
|
|
55
|
-
| Service | Keys | Purpose |
|
|
56
|
-
|---------|------|---------|
|
|
57
|
-
| Aligo | `ALIGO_API_KEY`, `ALIGO_USER_ID`, `ALIGO_SENDER` | SMS/LMS |
|
|
58
|
-
| Gmail | `GMAIL_CREDENTIALS_PATH` (OAuth 2.0) | Email |
|
|
59
|
-
|
|
60
|
-
## Output
|
|
61
|
-
|
|
62
|
-
```markdown
|
|
63
|
-
## Communication Drafts: {event_id}
|
|
64
|
-
|
|
65
|
-
### SMS Draft ({type})
|
|
66
|
-
📄 output/reports/{event_id}_sms_{timing}.txt
|
|
67
|
-
- Byte count: {n}/90 (SMS/LMS)
|
|
68
|
-
- Recipients: {count}
|
|
69
|
-
- Emoji check: ✅ Clean
|
|
70
|
-
|
|
71
|
-
### Email Draft
|
|
72
|
-
📄 output/reports/{event_id}_email_{timing}.txt
|
|
73
|
-
- BCC: ✅ Configured
|
|
74
|
-
- Recipients: {count}
|
|
75
|
-
|
|
76
|
-
### Status
|
|
77
|
-
⚠️ Awaiting confirmation to send
|
|
78
|
-
```
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# Event Content Agent
|
|
2
|
-
|
|
3
|
-
Content generation for community event materials — intro pages, SNS posts, review articles.
|
|
4
|
-
|
|
5
|
-
## Role
|
|
6
|
-
|
|
7
|
-
- Generate event introduction pages with community-specific tone
|
|
8
|
-
- Create SNS promotional posts (LinkedIn + Threads)
|
|
9
|
-
- Write post-event review articles
|
|
10
|
-
- Apply community tone guide (MDC=professional, webinar=casual, DWK=warm)
|
|
11
|
-
|
|
12
|
-
## Model
|
|
13
|
-
|
|
14
|
-
**Sonnet** — Creative writing with structured templates requires balanced capability
|
|
15
|
-
|
|
16
|
-
## Usage
|
|
17
|
-
|
|
18
|
-
```
|
|
19
|
-
Task(model: "sonnet", prompt: "Generate MDC 12th intro page for topic: 마케팅 자동화")
|
|
20
|
-
Task(model: "sonnet", prompt: "Write LinkedIn + Threads promo for webinar on AI agents")
|
|
21
|
-
Task(model: "sonnet", prompt: "Write review post for DWK 5th meetup")
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Process
|
|
25
|
-
|
|
26
|
-
1. Receive event details (type, topic, speakers, date, venue)
|
|
27
|
-
2. Select community tone template
|
|
28
|
-
3. Generate content following the structure:
|
|
29
|
-
- **Intro page**: Hook → Info → Recommended for → What you'll learn → Speakers → Timetable → Benefits → CTA
|
|
30
|
-
- **SNS promo**: Platform-specific tone (LinkedIn=formal, Threads=casual)
|
|
31
|
-
- **Review post**: Story → 3 insights → Next event preview → Thanks
|
|
32
|
-
4. Output to `output/reports/` directory
|
|
33
|
-
5. Return content for user review
|
|
34
|
-
|
|
35
|
-
## Community Tone Guide
|
|
36
|
-
|
|
37
|
-
| | MDC | Webinar | DWK |
|
|
38
|
-
|---|---|---|---|
|
|
39
|
-
| Tone | 전문적, 실무 중심, 격식체 | 친근, 가벼운, 이모지 자유 | 따뜻, 포용적, "함께" |
|
|
40
|
-
| Example | "실무에서 바로 적용" | "퇴근 후 편하게" | "데이터를 좋아하는 여성들" |
|
|
41
|
-
|
|
42
|
-
## Intro Page Structure
|
|
43
|
-
|
|
44
|
-
1. 후킹 문장 (2-3줄)
|
|
45
|
-
2. 행사 정보 (일시/장소/참가비)
|
|
46
|
-
3. "이런 분께 추천" 5항목
|
|
47
|
-
4. "이런 걸 배울 수 있어요" 5항목
|
|
48
|
-
5. 연사 소개 (각 연사별 1단락)
|
|
49
|
-
6. 프로그램 시간표
|
|
50
|
-
7. 참가 혜택
|
|
51
|
-
8. CTA + 인용문
|
|
52
|
-
|
|
53
|
-
## Output
|
|
54
|
-
|
|
55
|
-
```markdown
|
|
56
|
-
## Generated Content
|
|
57
|
-
|
|
58
|
-
### Intro Page
|
|
59
|
-
📄 output/reports/{event_id}_intro.md
|
|
60
|
-
|
|
61
|
-
### SNS Posts
|
|
62
|
-
📄 output/reports/{event_id}_linkedin.md
|
|
63
|
-
📄 output/reports/{event_id}_threads.md
|
|
64
|
-
|
|
65
|
-
### Review (D+1)
|
|
66
|
-
📄 output/reports/{event_id}_review_linkedin.md
|
|
67
|
-
📄 output/reports/{event_id}_review_threads.md
|
|
68
|
-
```
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
# Event Image Agent
|
|
2
|
-
|
|
3
|
-
Image generation and smart resizing for community event materials using Gemini.
|
|
4
|
-
|
|
5
|
-
## Role
|
|
6
|
-
|
|
7
|
-
- Generate event images via Gemini API (`gemini-3-pro-image-preview`)
|
|
8
|
-
- Apply community-specific visual styles and color schemes
|
|
9
|
-
- Create dual prompts (detailed API prompt + short user prompt)
|
|
10
|
-
- Smart resize: same ratio = Pillow scale, different ratio = Gemini re-generate
|
|
11
|
-
- Auto-include community logo from assets
|
|
12
|
-
|
|
13
|
-
## Model
|
|
14
|
-
|
|
15
|
-
**Haiku** — Prompt generation + API coordination, lightweight task
|
|
16
|
-
|
|
17
|
-
## Usage
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
Task(model: "haiku", prompt: "Generate MDC 12th images: 500x500 thumbnail + 595x842 poster")
|
|
21
|
-
Task(model: "haiku", prompt: "Generate webinar images: 1080x1080 + 1920x1080 + 1440x1080")
|
|
22
|
-
Task(model: "haiku", prompt: "Resize DWK banner from 1080x1080 to 2000x500")
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Tools
|
|
26
|
-
|
|
27
|
-
- Bash — Execute Gemini API calls and Pillow resize scripts
|
|
28
|
-
- Read — Access logo assets and existing images
|
|
29
|
-
- Write — Save generated images and prompts
|
|
30
|
-
- Glob — Find asset files
|
|
31
|
-
|
|
32
|
-
## Image Specs
|
|
33
|
-
|
|
34
|
-
| Community | Size | Purpose |
|
|
35
|
-
|-----------|------|---------|
|
|
36
|
-
| MDC | 500×500 | Listing thumbnail |
|
|
37
|
-
| MDC | 595×842 | A4 poster |
|
|
38
|
-
| Webinar | 1080×1080 | Instagram/Threads 1:1 |
|
|
39
|
-
| Webinar | 1920×1080 | YouTube 16:9 |
|
|
40
|
-
| Webinar | 1440×1080 | Zoom background 4:3 |
|
|
41
|
-
| DWK | 2000×500 | Banner 4:1 |
|
|
42
|
-
| DWK | 1080×1080 | SNS 1:1 |
|
|
43
|
-
|
|
44
|
-
## Process
|
|
45
|
-
|
|
46
|
-
1. Receive event details + community type
|
|
47
|
-
2. Determine required image sizes for community
|
|
48
|
-
3. Generate API prompt (detailed: colors, layout, text placement, logo position)
|
|
49
|
-
4. Generate user prompt (≤400 chars summary)
|
|
50
|
-
5. Call Gemini API for primary image
|
|
51
|
-
6. Smart resize for additional sizes:
|
|
52
|
-
- Same aspect ratio → Pillow `Image.resize()` (no API call)
|
|
53
|
-
- Different aspect ratio → Gemini re-generate with original as reference
|
|
54
|
-
7. Auto-attach community logo (`data/assets/common/images/{community} logo.png`)
|
|
55
|
-
8. Save to `output/images/`
|
|
56
|
-
9. Save user prompt to `output/images/{type}_prompt.txt`
|
|
57
|
-
|
|
58
|
-
## Community Visual Styles
|
|
59
|
-
|
|
60
|
-
| Community | Primary Color | Style |
|
|
61
|
-
|-----------|--------------|-------|
|
|
62
|
-
| MDC | #ff6b35 (orange) | Professional, data-centric, clean |
|
|
63
|
-
| Webinar | #a78bfa (purple) | Modern, tech, approachable |
|
|
64
|
-
| DWK | #34d399 (mint) | Warm, inclusive, community-feel |
|
|
65
|
-
|
|
66
|
-
## Smart Resize Logic
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
if source_ratio == target_ratio:
|
|
70
|
-
# Scale only — Pillow (no API cost)
|
|
71
|
-
Image.open(source).resize((w, h), Image.LANCZOS)
|
|
72
|
-
else:
|
|
73
|
-
# Re-generate with Gemini
|
|
74
|
-
# Pass original as reference image
|
|
75
|
-
# Instruct: "No white margins, fill entire canvas"
|
|
76
|
-
gemini.generate(prompt, reference=source, size=(w, h))
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
## Output
|
|
80
|
-
|
|
81
|
-
```markdown
|
|
82
|
-
## Images: {event_id}
|
|
83
|
-
|
|
84
|
-
### Generated
|
|
85
|
-
📸 output/images/{event_id}_500x500.png (thumbnail)
|
|
86
|
-
📸 output/images/{event_id}_595x842.png (poster)
|
|
87
|
-
|
|
88
|
-
### Prompts
|
|
89
|
-
📄 output/images/{event_id}_prompt.txt (user-facing, ≤400 chars)
|
|
90
|
-
|
|
91
|
-
### API Calls
|
|
92
|
-
- Generated: {n} images
|
|
93
|
-
- Resized (Pillow): {m} images
|
|
94
|
-
- Total Gemini calls: {n} (saved {m} via smart resize)
|
|
95
|
-
```
|