@su-record/vibe 2.7.18 → 2.7.20
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 +37 -37
- package/CLAUDE.md +153 -153
- package/LICENSE +21 -21
- package/README.md +451 -449
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/docs/api-documenter.md +99 -99
- package/agents/docs/changelog-writer.md +93 -93
- package/agents/e2e-tester.md +294 -294
- package/agents/event/event-comms.md +78 -0
- package/agents/event/event-content.md +68 -0
- package/agents/event/event-image.md +95 -0
- package/agents/event/event-ops.md +84 -0
- package/agents/event/event-scheduler.md +69 -0
- package/agents/event/event-speaker.md +86 -0
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/junior-mentor.md +141 -141
- package/agents/planning/requirements-analyst.md +84 -84
- package/agents/planning/ux-advisor.md +83 -83
- package/agents/qa/acceptance-tester.md +86 -86
- package/agents/qa/edge-case-finder.md +93 -93
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui/ui-a11y-auditor.md +93 -93
- package/agents/ui/ui-antipattern-detector.md +94 -94
- package/agents/ui/ui-dataviz-advisor.md +69 -69
- package/agents/ui/ui-design-system-gen.md +57 -57
- package/agents/ui/ui-industry-analyzer.md +49 -49
- package/agents/ui/ui-layout-architect.md +65 -65
- package/agents/ui/ui-stack-implementer.md +68 -68
- package/agents/ui/ux-compliance-reviewer.md +81 -81
- package/agents/ui-previewer.md +258 -258
- package/commands/vibe.analyze.md +379 -379
- package/commands/vibe.event.md +163 -0
- package/commands/vibe.review.md +607 -607
- package/commands/vibe.run.md +2217 -2124
- package/commands/vibe.spec.md +1195 -1195
- package/commands/vibe.spec.review.md +569 -569
- package/commands/vibe.trace.md +50 -0
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.verify.md +484 -484
- package/dist/__tests__/architecture.test.d.ts +2 -0
- package/dist/__tests__/architecture.test.d.ts.map +1 -0
- package/dist/__tests__/architecture.test.js +207 -0
- package/dist/__tests__/architecture.test.js.map +1 -0
- package/dist/cli/auth.js +3 -3
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +45 -81
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.js +5 -5
- package/dist/cli/commands/remove.js +14 -14
- package/dist/cli/commands/sentinel.js +27 -27
- package/dist/cli/commands/skills.js +5 -5
- package/dist/cli/commands/slack.js +10 -10
- package/dist/cli/commands/telegram.js +12 -12
- package/dist/cli/detect.d.ts.map +1 -1
- package/dist/cli/detect.js +55 -32
- package/dist/cli/detect.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +52 -52
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/claude-commands.js +16 -16
- package/dist/cli/llm/config.js +18 -18
- package/dist/cli/llm/gemini-commands.js +16 -16
- package/dist/cli/llm/gpt-commands.js +19 -19
- package/dist/cli/llm/help.js +21 -21
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +24 -0
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/cursor-agents.js +32 -32
- package/dist/cli/postinstall/cursor-rules.js +83 -83
- package/dist/cli/postinstall/cursor-skills.js +743 -743
- package/dist/cli/setup/Provisioner.js +42 -42
- package/dist/infra/lib/AutomationLevel.d.ts +48 -0
- package/dist/infra/lib/AutomationLevel.d.ts.map +1 -0
- package/dist/infra/lib/AutomationLevel.js +157 -0
- package/dist/infra/lib/AutomationLevel.js.map +1 -0
- package/dist/infra/lib/DecisionTracer.d.ts +81 -0
- package/dist/infra/lib/DecisionTracer.d.ts.map +1 -0
- package/dist/infra/lib/DecisionTracer.js +135 -0
- package/dist/infra/lib/DecisionTracer.js.map +1 -0
- package/dist/infra/lib/DeepInit.js +24 -24
- package/dist/infra/lib/InteractiveCheckpoint.d.ts +75 -0
- package/dist/infra/lib/InteractiveCheckpoint.d.ts.map +1 -0
- package/dist/infra/lib/InteractiveCheckpoint.js +179 -0
- package/dist/infra/lib/InteractiveCheckpoint.js.map +1 -0
- package/dist/infra/lib/IterationTracker.d.ts +44 -0
- package/dist/infra/lib/IterationTracker.d.ts.map +1 -1
- package/dist/infra/lib/IterationTracker.js +267 -12
- package/dist/infra/lib/IterationTracker.js.map +1 -1
- package/dist/infra/lib/LoopBreaker.d.ts +56 -0
- package/dist/infra/lib/LoopBreaker.d.ts.map +1 -0
- package/dist/infra/lib/LoopBreaker.js +109 -0
- package/dist/infra/lib/LoopBreaker.js.map +1 -0
- package/dist/infra/lib/PythonParser.js +108 -108
- package/dist/infra/lib/ReviewRace.js +96 -96
- package/dist/infra/lib/SkillFrontmatter.js +28 -28
- package/dist/infra/lib/SkillQualityGate.js +9 -9
- package/dist/infra/lib/SkillRepository.js +159 -159
- package/dist/infra/lib/UltraQA.js +99 -99
- package/dist/infra/lib/VerificationLoop.d.ts +105 -0
- package/dist/infra/lib/VerificationLoop.d.ts.map +1 -0
- package/dist/infra/lib/VerificationLoop.js +189 -0
- package/dist/infra/lib/VerificationLoop.js.map +1 -0
- package/dist/infra/lib/__tests__/AutomationLevel.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/AutomationLevel.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/AutomationLevel.test.js +297 -0
- package/dist/infra/lib/__tests__/AutomationLevel.test.js.map +1 -0
- package/dist/infra/lib/__tests__/DecisionTracer.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/DecisionTracer.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/DecisionTracer.test.js +274 -0
- package/dist/infra/lib/__tests__/DecisionTracer.test.js.map +1 -0
- package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.js +350 -0
- package/dist/infra/lib/__tests__/InteractiveCheckpoint.test.js.map +1 -0
- package/dist/infra/lib/__tests__/LoopBreaker.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/LoopBreaker.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/LoopBreaker.test.js +340 -0
- package/dist/infra/lib/__tests__/LoopBreaker.test.js.map +1 -0
- package/dist/infra/lib/__tests__/VerificationLoop.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/VerificationLoop.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/VerificationLoop.test.js +486 -0
- package/dist/infra/lib/__tests__/VerificationLoop.test.js.map +1 -0
- package/dist/infra/lib/autonomy/AuditStore.js +41 -41
- package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
- package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
- package/dist/infra/lib/autonomy/PolicyEngine.d.ts +3 -3
- package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
- package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
- package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
- package/dist/infra/lib/embedding/VectorStore.js +22 -22
- package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js +4 -0
- package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js.map +1 -1
- package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
- package/dist/infra/lib/evolution/DeprecationDetector.d.ts +68 -0
- package/dist/infra/lib/evolution/DeprecationDetector.d.ts.map +1 -0
- package/dist/infra/lib/evolution/DeprecationDetector.js +207 -0
- package/dist/infra/lib/evolution/DeprecationDetector.js.map +1 -0
- package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
- package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
- package/dist/infra/lib/evolution/InsightStore.js +90 -90
- package/dist/infra/lib/evolution/ParityTester.d.ts +74 -0
- package/dist/infra/lib/evolution/ParityTester.d.ts.map +1 -0
- package/dist/infra/lib/evolution/ParityTester.js +238 -0
- package/dist/infra/lib/evolution/ParityTester.js.map +1 -0
- package/dist/infra/lib/evolution/RollbackManager.js +5 -5
- package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
- package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
- package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
- package/dist/infra/lib/evolution/UsageTracker.js +28 -28
- package/dist/infra/lib/evolution/__tests__/deprecation.test.d.ts +2 -0
- package/dist/infra/lib/evolution/__tests__/deprecation.test.d.ts.map +1 -0
- package/dist/infra/lib/evolution/__tests__/deprecation.test.js +251 -0
- package/dist/infra/lib/evolution/__tests__/deprecation.test.js.map +1 -0
- package/dist/infra/lib/evolution/__tests__/parity.test.d.ts +2 -0
- package/dist/infra/lib/evolution/__tests__/parity.test.d.ts.map +1 -0
- package/dist/infra/lib/evolution/__tests__/parity.test.js +319 -0
- package/dist/infra/lib/evolution/__tests__/parity.test.js.map +1 -0
- package/dist/infra/lib/evolution/index.d.ts +4 -0
- package/dist/infra/lib/evolution/index.d.ts.map +1 -1
- package/dist/infra/lib/evolution/index.js +3 -0
- package/dist/infra/lib/evolution/index.js.map +1 -1
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- package/dist/infra/lib/gpt/orchestration.js +4 -4
- package/dist/infra/lib/gpt/specializations.d.ts +1 -1
- package/dist/infra/lib/gpt/specializations.js +1 -1
- package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/infra/lib/memory/MemorySearch.js +57 -57
- package/dist/infra/lib/memory/MemoryStorage.js +181 -181
- package/dist/infra/lib/memory/ObservationStore.js +28 -28
- package/dist/infra/lib/memory/ReflectionStore.js +30 -30
- package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
- package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
- package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
- package/dist/infra/lib/telemetry/SkillTelemetry.d.ts +6 -0
- package/dist/infra/lib/telemetry/SkillTelemetry.d.ts.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.js +11 -0
- package/dist/infra/lib/telemetry/SkillTelemetry.js.map +1 -1
- package/dist/infra/orchestrator/AgentManager.js +12 -12
- package/dist/infra/orchestrator/AgentRegistry.js +65 -65
- package/dist/infra/orchestrator/BackgroundManager.d.ts.map +1 -1
- package/dist/infra/orchestrator/BackgroundManager.js +2 -0
- package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
- package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/infra/orchestrator/PhasePipeline.js +1 -1
- package/dist/infra/orchestrator/PhasePipeline.js.map +1 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
- package/dist/infra/orchestrator/parallelResearch.js +24 -24
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/index.d.ts +16 -19
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +15 -27
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
- package/dist/tools/memory/startSession.js +1 -1
- package/dist/tools/memory/startSession.js.map +1 -1
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/dist/tools/semantic/astGrep.test.js +6 -6
- package/dist/tools/spec/index.d.ts +0 -4
- package/dist/tools/spec/index.d.ts.map +1 -1
- package/dist/tools/spec/index.js +0 -4
- package/dist/tools/spec/index.js.map +1 -1
- package/dist/tools/spec/prdParser.test.js +171 -171
- package/dist/tools/spec/specGenerator.js +169 -169
- package/dist/tools/spec/traceabilityMatrix.js +64 -64
- package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
- package/hooks/gemini-hooks.json +73 -73
- package/hooks/hooks.json +137 -137
- package/hooks/scripts/code-check.js +77 -77
- package/hooks/scripts/context-save.js +212 -212
- package/hooks/scripts/evolution-engine.js +69 -0
- package/hooks/scripts/hud-status.js +291 -291
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +475 -475
- package/hooks/scripts/post-edit.js +32 -32
- package/hooks/scripts/pre-tool-guard.js +125 -125
- package/hooks/scripts/prompt-dispatcher.js +185 -185
- package/hooks/scripts/sentinel-guard.js +104 -104
- package/hooks/scripts/session-start.js +106 -106
- package/hooks/scripts/skill-injector.js +83 -0
- package/hooks/scripts/stop-notify.js +209 -209
- package/hooks/scripts/utils.js +100 -100
- package/languages/csharp-unity.md +515 -515
- package/languages/gdscript-godot.md +470 -470
- package/languages/ruby-rails.md +489 -489
- package/languages/typescript-angular.md +433 -433
- package/languages/typescript-astro.md +416 -416
- package/languages/typescript-electron.md +406 -406
- package/languages/typescript-nestjs.md +524 -524
- package/languages/typescript-svelte.md +407 -407
- package/languages/typescript-tauri.md +365 -365
- package/package.json +101 -123
- package/skills/agents-md/SKILL.md +120 -120
- package/skills/arch-guard/SKILL.md +180 -180
- package/skills/brand-assets/SKILL.md +146 -146
- package/skills/capability-loop/SKILL.md +167 -167
- package/skills/characterization-test/SKILL.md +206 -206
- package/skills/commerce-patterns/SKILL.md +63 -63
- package/skills/commit-push-pr/SKILL.md +75 -75
- package/skills/context7-usage/SKILL.md +105 -105
- package/skills/core-capabilities/SKILL.md +13 -13
- package/skills/e2e-commerce/SKILL.md +61 -61
- package/skills/event-comms/SKILL.md +161 -0
- package/skills/event-ops/SKILL.md +197 -0
- package/skills/event-planning/SKILL.md +131 -0
- package/skills/exec-plan/SKILL.md +147 -147
- package/skills/frontend-design/SKILL.md +12 -12
- package/skills/git-worktree/SKILL.md +72 -72
- package/skills/handoff/SKILL.md +109 -109
- package/skills/parallel-research/SKILL.md +87 -87
- package/skills/priority-todos/SKILL.md +63 -63
- package/skills/seo-checklist/SKILL.md +57 -57
- package/skills/techdebt/SKILL.md +122 -122
- package/skills/tool-fallback/SKILL.md +103 -103
- package/skills/typescript-advanced-types/SKILL.md +66 -66
- package/skills/ui-ux-pro-max/SKILL.md +221 -221
- package/skills/vercel-react-best-practices/SKILL.md +59 -59
- package/skills/video-production/SKILL.md +51 -51
- package/vibe/config.json +29 -29
- package/vibe/constitution.md +227 -227
- package/vibe/rules/principles/communication-guide.md +98 -98
- package/vibe/rules/principles/development-philosophy.md +52 -52
- package/vibe/rules/principles/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/performance.md +236 -236
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/git-workflow.md +237 -237
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/rules/standards/security.md +305 -305
- package/vibe/rules/writing/document-style.md +74 -74
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
- package/vibe/ui-ux-data/charts.csv +26 -26
- package/vibe/ui-ux-data/colors.csv +97 -97
- package/vibe/ui-ux-data/icons.csv +101 -101
- package/vibe/ui-ux-data/landing.csv +31 -31
- package/vibe/ui-ux-data/products.csv +96 -96
- package/vibe/ui-ux-data/react-performance.csv +45 -45
- package/vibe/ui-ux-data/stacks/astro.csv +54 -54
- package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
- package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
- package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
- package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
- package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
- package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
- package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
- package/vibe/ui-ux-data/stacks/react.csv +54 -54
- package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
- package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
- package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
- package/vibe/ui-ux-data/stacks/vue.csv +50 -50
- package/vibe/ui-ux-data/styles.csv +68 -68
- package/vibe/ui-ux-data/typography.csv +57 -57
- package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
- package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
- package/vibe/ui-ux-data/version.json +31 -31
- package/vibe/ui-ux-data/web-interface.csv +31 -31
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: commit-push-pr
|
|
3
|
-
description: "Commit, push, and create PR in one go. Auto-activates on commit, PR, push keywords."
|
|
4
|
-
triggers: [commit, push, PR, pull request, merge]
|
|
5
|
-
priority: 70
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Commit-Push-PR
|
|
9
|
-
|
|
10
|
-
## Pre-checks
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
git status # What's changed
|
|
14
|
-
git diff --stat # Review changes
|
|
15
|
-
git log --oneline -5 # Recent commits for style
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Workflow
|
|
19
|
-
|
|
20
|
-
1. Review and stage changed files
|
|
21
|
-
2. Write commit message (Conventional Commits)
|
|
22
|
-
3. Push to remote branch
|
|
23
|
-
4. Create PR with `gh pr create`
|
|
24
|
-
|
|
25
|
-
## Commit Message Format
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
[type] title (under 50 chars)
|
|
29
|
-
|
|
30
|
-
body (optional, 72 char wrap)
|
|
31
|
-
|
|
32
|
-
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Types: `feat` | `fix` | `docs` | `style` | `refactor` | `test` | `chore` | `perf`
|
|
36
|
-
|
|
37
|
-
## Security Checks (CRITICAL)
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
# Before committing — detect sensitive files
|
|
41
|
-
git diff --cached --name-only | grep -E '\.(env|pem|key)$|credentials|secret'
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
**Never commit:** `.env`, `.env.local`, `*.pem`, `*.key`, `credentials.json`, `service-account.json`
|
|
45
|
-
|
|
46
|
-
> If sensitive files are staged, **immediately warn and abort**.
|
|
47
|
-
|
|
48
|
-
## Branch Protection
|
|
49
|
-
|
|
50
|
-
- **No direct commits/pushes to main/master**
|
|
51
|
-
- If on main: create a new branch first
|
|
52
|
-
- **Never** `--force` push to main/master
|
|
53
|
-
|
|
54
|
-
## PR Format
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
gh pr create \
|
|
58
|
-
--title "[type] title" \
|
|
59
|
-
--body "## Changes
|
|
60
|
-
- Key changes
|
|
61
|
-
|
|
62
|
-
## Related Issues
|
|
63
|
-
- Closes #issue-number
|
|
64
|
-
|
|
65
|
-
## Testing
|
|
66
|
-
- Test methods and results"
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Done Criteria (K4)
|
|
70
|
-
|
|
71
|
-
- [ ] No sensitive files in commit
|
|
72
|
-
- [ ] Commit message follows Conventional Commits
|
|
73
|
-
- [ ] Co-Authored-By line included
|
|
74
|
-
- [ ] Not pushing directly to main/master
|
|
75
|
-
- [ ] PR created with clear description
|
|
1
|
+
---
|
|
2
|
+
name: commit-push-pr
|
|
3
|
+
description: "Commit, push, and create PR in one go. Auto-activates on commit, PR, push keywords."
|
|
4
|
+
triggers: [commit, push, PR, pull request, merge]
|
|
5
|
+
priority: 70
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Commit-Push-PR
|
|
9
|
+
|
|
10
|
+
## Pre-checks
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
git status # What's changed
|
|
14
|
+
git diff --stat # Review changes
|
|
15
|
+
git log --oneline -5 # Recent commits for style
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
1. Review and stage changed files
|
|
21
|
+
2. Write commit message (Conventional Commits)
|
|
22
|
+
3. Push to remote branch
|
|
23
|
+
4. Create PR with `gh pr create`
|
|
24
|
+
|
|
25
|
+
## Commit Message Format
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
[type] title (under 50 chars)
|
|
29
|
+
|
|
30
|
+
body (optional, 72 char wrap)
|
|
31
|
+
|
|
32
|
+
Co-Authored-By: Claude <noreply@anthropic.com>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Types: `feat` | `fix` | `docs` | `style` | `refactor` | `test` | `chore` | `perf`
|
|
36
|
+
|
|
37
|
+
## Security Checks (CRITICAL)
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Before committing — detect sensitive files
|
|
41
|
+
git diff --cached --name-only | grep -E '\.(env|pem|key)$|credentials|secret'
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Never commit:** `.env`, `.env.local`, `*.pem`, `*.key`, `credentials.json`, `service-account.json`
|
|
45
|
+
|
|
46
|
+
> If sensitive files are staged, **immediately warn and abort**.
|
|
47
|
+
|
|
48
|
+
## Branch Protection
|
|
49
|
+
|
|
50
|
+
- **No direct commits/pushes to main/master**
|
|
51
|
+
- If on main: create a new branch first
|
|
52
|
+
- **Never** `--force` push to main/master
|
|
53
|
+
|
|
54
|
+
## PR Format
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
gh pr create \
|
|
58
|
+
--title "[type] title" \
|
|
59
|
+
--body "## Changes
|
|
60
|
+
- Key changes
|
|
61
|
+
|
|
62
|
+
## Related Issues
|
|
63
|
+
- Closes #issue-number
|
|
64
|
+
|
|
65
|
+
## Testing
|
|
66
|
+
- Test methods and results"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Done Criteria (K4)
|
|
70
|
+
|
|
71
|
+
- [ ] No sensitive files in commit
|
|
72
|
+
- [ ] Commit message follows Conventional Commits
|
|
73
|
+
- [ ] Co-Authored-By line included
|
|
74
|
+
- [ ] Not pushing directly to main/master
|
|
75
|
+
- [ ] PR created with clear description
|
|
@@ -1,105 +1,105 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: context7-usage
|
|
3
|
-
description: "Context7 plugin for latest library documentation. Auto-activates when docs, documentation, latest version, official docs, API reference, or library help is needed."
|
|
4
|
-
triggers: [docs, documentation, latest version, official docs, API reference, library help, context7]
|
|
5
|
-
priority: 60
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Context7 Usage
|
|
9
|
-
|
|
10
|
-
Guide for searching latest library/framework documentation using Context7 plugin with subagent isolation.
|
|
11
|
-
|
|
12
|
-
## Why Subagent Approach?
|
|
13
|
-
|
|
14
|
-
| Approach | Problem |
|
|
15
|
-
|----------|---------|
|
|
16
|
-
| Direct plugin call | Docs content fills main context, causing bloat |
|
|
17
|
-
| Subagent isolation | Docs queried in separate context, only results returned |
|
|
18
|
-
|
|
19
|
-
**Benefits:**
|
|
20
|
-
|
|
21
|
-
- Prevents context bloat during long coding sessions
|
|
22
|
-
- Solves knowledge cutoff problem with latest docs
|
|
23
|
-
- Main context stays focused on implementation
|
|
24
|
-
|
|
25
|
-
## When to Use
|
|
26
|
-
|
|
27
|
-
| Situation | Example |
|
|
28
|
-
|-----------|---------|
|
|
29
|
-
| Latest API check | "React 19 use() hook usage" |
|
|
30
|
-
| Version differences | "Next.js 15 changes" |
|
|
31
|
-
| Official docs needed | "Prisma schema syntax" |
|
|
32
|
-
| Migration guide | "Vue 2 → Vue 3 migration" |
|
|
33
|
-
|
|
34
|
-
## How It Works
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
User asks library question
|
|
38
|
-
↓
|
|
39
|
-
Skill detects docs need
|
|
40
|
-
↓
|
|
41
|
-
Spawn docs-researcher subagent (haiku)
|
|
42
|
-
↓
|
|
43
|
-
Subagent calls context7 in isolated context
|
|
44
|
-
↓
|
|
45
|
-
Returns only relevant info to main context
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Usage
|
|
49
|
-
|
|
50
|
-
### Automatic (Recommended)
|
|
51
|
-
|
|
52
|
-
Just ask library/API questions naturally:
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
"How do I use React 19 use() hook?"
|
|
56
|
-
"What's new in Next.js 15?"
|
|
57
|
-
"Prisma many-to-many relation syntax"
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
The skill auto-detects and spawns a docs-researcher subagent.
|
|
61
|
-
|
|
62
|
-
### Manual Command
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
/context7:docs <library> [query]
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Examples:
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
/context7:docs react hooks
|
|
72
|
-
/context7:docs next.js app router
|
|
73
|
-
/context7:docs prisma relations
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Implementation Pattern
|
|
77
|
-
|
|
78
|
-
When you detect a library/API documentation need, spawn a subagent:
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
Task tool call:
|
|
82
|
-
- subagent_type: Explore
|
|
83
|
-
- model: haiku
|
|
84
|
-
- prompt: "Use context7 to find [library] documentation about [topic]. Return only the relevant API usage examples and key points."
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
The subagent handles the context7 calls and returns a summary, keeping main context clean.
|
|
88
|
-
|
|
89
|
-
## Fallback Chain
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
context7 plugin not installed
|
|
93
|
-
↓
|
|
94
|
-
Prompt user: /plugin install context7
|
|
95
|
-
↓
|
|
96
|
-
If still unavailable: Web Search for official docs
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Installation
|
|
100
|
-
|
|
101
|
-
If context7 is not installed, guide user:
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
/plugin install context7
|
|
105
|
-
```
|
|
1
|
+
---
|
|
2
|
+
name: context7-usage
|
|
3
|
+
description: "Context7 plugin for latest library documentation. Auto-activates when docs, documentation, latest version, official docs, API reference, or library help is needed."
|
|
4
|
+
triggers: [docs, documentation, latest version, official docs, API reference, library help, context7]
|
|
5
|
+
priority: 60
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Context7 Usage
|
|
9
|
+
|
|
10
|
+
Guide for searching latest library/framework documentation using Context7 plugin with subagent isolation.
|
|
11
|
+
|
|
12
|
+
## Why Subagent Approach?
|
|
13
|
+
|
|
14
|
+
| Approach | Problem |
|
|
15
|
+
|----------|---------|
|
|
16
|
+
| Direct plugin call | Docs content fills main context, causing bloat |
|
|
17
|
+
| Subagent isolation | Docs queried in separate context, only results returned |
|
|
18
|
+
|
|
19
|
+
**Benefits:**
|
|
20
|
+
|
|
21
|
+
- Prevents context bloat during long coding sessions
|
|
22
|
+
- Solves knowledge cutoff problem with latest docs
|
|
23
|
+
- Main context stays focused on implementation
|
|
24
|
+
|
|
25
|
+
## When to Use
|
|
26
|
+
|
|
27
|
+
| Situation | Example |
|
|
28
|
+
|-----------|---------|
|
|
29
|
+
| Latest API check | "React 19 use() hook usage" |
|
|
30
|
+
| Version differences | "Next.js 15 changes" |
|
|
31
|
+
| Official docs needed | "Prisma schema syntax" |
|
|
32
|
+
| Migration guide | "Vue 2 → Vue 3 migration" |
|
|
33
|
+
|
|
34
|
+
## How It Works
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
User asks library question
|
|
38
|
+
↓
|
|
39
|
+
Skill detects docs need
|
|
40
|
+
↓
|
|
41
|
+
Spawn docs-researcher subagent (haiku)
|
|
42
|
+
↓
|
|
43
|
+
Subagent calls context7 in isolated context
|
|
44
|
+
↓
|
|
45
|
+
Returns only relevant info to main context
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Usage
|
|
49
|
+
|
|
50
|
+
### Automatic (Recommended)
|
|
51
|
+
|
|
52
|
+
Just ask library/API questions naturally:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
"How do I use React 19 use() hook?"
|
|
56
|
+
"What's new in Next.js 15?"
|
|
57
|
+
"Prisma many-to-many relation syntax"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The skill auto-detects and spawns a docs-researcher subagent.
|
|
61
|
+
|
|
62
|
+
### Manual Command
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
/context7:docs <library> [query]
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Examples:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
/context7:docs react hooks
|
|
72
|
+
/context7:docs next.js app router
|
|
73
|
+
/context7:docs prisma relations
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Implementation Pattern
|
|
77
|
+
|
|
78
|
+
When you detect a library/API documentation need, spawn a subagent:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
Task tool call:
|
|
82
|
+
- subagent_type: Explore
|
|
83
|
+
- model: haiku
|
|
84
|
+
- prompt: "Use context7 to find [library] documentation about [topic]. Return only the relevant API usage examples and key points."
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The subagent handles the context7 calls and returns a summary, keeping main context clean.
|
|
88
|
+
|
|
89
|
+
## Fallback Chain
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
context7 plugin not installed
|
|
93
|
+
↓
|
|
94
|
+
Prompt user: /plugin install context7
|
|
95
|
+
↓
|
|
96
|
+
If still unavailable: Web Search for official docs
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Installation
|
|
100
|
+
|
|
101
|
+
If context7 is not installed, guide user:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
/plugin install context7
|
|
105
|
+
```
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: core-capabilities
|
|
3
|
-
description: "DEPRECATED — content covered by CLAUDE.md. Context thresholds and workflow guidance are in CLAUDE.md."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Core Capabilities (Deprecated)
|
|
7
|
-
|
|
8
|
-
This skill's content is covered by CLAUDE.md:
|
|
9
|
-
- Workflow: `/vibe.spec` → `/vibe.run` → `/vibe.trace` → review → Done
|
|
10
|
-
- Context thresholds: 70% checkpoint, 80% warning, 90% critical
|
|
11
|
-
- Magic keywords: `ultrawork`, `ralph`, `ralplan`, `verify`, `quick`
|
|
12
|
-
|
|
13
|
-
Refer to CLAUDE.md directly for all framework capabilities.
|
|
1
|
+
---
|
|
2
|
+
name: core-capabilities
|
|
3
|
+
description: "DEPRECATED — content covered by CLAUDE.md. Context thresholds and workflow guidance are in CLAUDE.md."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Core Capabilities (Deprecated)
|
|
7
|
+
|
|
8
|
+
This skill's content is covered by CLAUDE.md:
|
|
9
|
+
- Workflow: `/vibe.spec` → `/vibe.run` → `/vibe.trace` → review → Done
|
|
10
|
+
- Context thresholds: 70% checkpoint, 80% warning, 90% critical
|
|
11
|
+
- Magic keywords: `ultrawork`, `ralph`, `ralplan`, `verify`, `quick`
|
|
12
|
+
|
|
13
|
+
Refer to CLAUDE.md directly for all framework capabilities.
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: e2e-commerce
|
|
3
|
-
description: "E2E test scenarios for commerce checkout and payment flows"
|
|
4
|
-
triggers: [e2e commerce, checkout test, payment test, order flow test]
|
|
5
|
-
priority: 65
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# E2E Commerce Test Scenarios
|
|
9
|
-
|
|
10
|
-
## Pre-check (K1)
|
|
11
|
-
|
|
12
|
-
> Are you testing a checkout/payment/order flow? If testing simple CRUD or non-transactional features, standard E2E patterns suffice — this skill is not needed.
|
|
13
|
-
|
|
14
|
-
## Must-Test Scenarios
|
|
15
|
-
|
|
16
|
-
### P0 — Blocks Deployment
|
|
17
|
-
|
|
18
|
-
| Scenario | What to Verify | Gotcha |
|
|
19
|
-
|----------|---------------|--------|
|
|
20
|
-
| **Happy path checkout** | Cart → Shipping → Payment → Order confirmation | Verify order status text, not just URL change |
|
|
21
|
-
| **Payment failure** | Error message shown, stock released | Check stock is RELEASED after failure, not just error displayed |
|
|
22
|
-
| **Duplicate payment** | Only 1 order created on double-click | `Promise.all([click(), click()])` then verify order count via API |
|
|
23
|
-
| **Out of stock** | Blocks checkout with clear message | Simulate stock depletion mid-checkout via test API |
|
|
24
|
-
|
|
25
|
-
### P1 — Should Pass
|
|
26
|
-
|
|
27
|
-
| Scenario | What to Verify | Gotcha |
|
|
28
|
-
|----------|---------------|--------|
|
|
29
|
-
| **Coupon calculation** | Discount amount and total correct | Test percentage AND fixed amount coupons separately |
|
|
30
|
-
| **Webhook resilience** | Order completes even with delayed webhook | Configure 5s delay, verify processing→complete transition |
|
|
31
|
-
| **Cart merge on login** | Guest cart merged into user cart | User cart takes priority for duplicate items |
|
|
32
|
-
| **Partial refund** | Refunded amount correct, order updated | Verify remaining amount, not just refund event |
|
|
33
|
-
|
|
34
|
-
### P2 — Nice to Have
|
|
35
|
-
|
|
36
|
-
| Scenario | What to Verify |
|
|
37
|
-
|----------|---------------|
|
|
38
|
-
| Multiple payment methods | Each method completes checkout |
|
|
39
|
-
| Guest checkout | Full flow without login |
|
|
40
|
-
| Order cancellation | Refund triggered, stock restored |
|
|
41
|
-
|
|
42
|
-
## Test Environment Gotchas
|
|
43
|
-
|
|
44
|
-
| Gotcha | Fix |
|
|
45
|
-
|--------|-----|
|
|
46
|
-
| Using real PG sandbox in CI | Use MSW (`setupServer`) for mock PG responses |
|
|
47
|
-
| Flaky tests from timing | Use `waitForSelector`/`waitForURL`, never `sleep` |
|
|
48
|
-
| Test data leaks between tests | Seed in `beforeAll`, clean in `afterAll` |
|
|
49
|
-
| Hardcoded test card numbers | Document: `4000000000000002` = decline |
|
|
50
|
-
|
|
51
|
-
## Related
|
|
52
|
-
|
|
53
|
-
See `commerce-patterns` skill for implementation gotchas (idempotency, atomic stock, payment state machine) that these tests verify.
|
|
54
|
-
|
|
55
|
-
## Done Criteria (K4)
|
|
56
|
-
|
|
57
|
-
- [ ] All P0 scenarios pass in CI
|
|
58
|
-
- [ ] P1 scenarios written and tracked
|
|
59
|
-
- [ ] Test data seeded/cleaned per suite
|
|
60
|
-
- [ ] No flaky tests (no arbitrary waits)
|
|
61
|
-
- [ ] Mock PG server configured for CI
|
|
1
|
+
---
|
|
2
|
+
name: e2e-commerce
|
|
3
|
+
description: "E2E test scenarios for commerce checkout and payment flows"
|
|
4
|
+
triggers: [e2e commerce, checkout test, payment test, order flow test]
|
|
5
|
+
priority: 65
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# E2E Commerce Test Scenarios
|
|
9
|
+
|
|
10
|
+
## Pre-check (K1)
|
|
11
|
+
|
|
12
|
+
> Are you testing a checkout/payment/order flow? If testing simple CRUD or non-transactional features, standard E2E patterns suffice — this skill is not needed.
|
|
13
|
+
|
|
14
|
+
## Must-Test Scenarios
|
|
15
|
+
|
|
16
|
+
### P0 — Blocks Deployment
|
|
17
|
+
|
|
18
|
+
| Scenario | What to Verify | Gotcha |
|
|
19
|
+
|----------|---------------|--------|
|
|
20
|
+
| **Happy path checkout** | Cart → Shipping → Payment → Order confirmation | Verify order status text, not just URL change |
|
|
21
|
+
| **Payment failure** | Error message shown, stock released | Check stock is RELEASED after failure, not just error displayed |
|
|
22
|
+
| **Duplicate payment** | Only 1 order created on double-click | `Promise.all([click(), click()])` then verify order count via API |
|
|
23
|
+
| **Out of stock** | Blocks checkout with clear message | Simulate stock depletion mid-checkout via test API |
|
|
24
|
+
|
|
25
|
+
### P1 — Should Pass
|
|
26
|
+
|
|
27
|
+
| Scenario | What to Verify | Gotcha |
|
|
28
|
+
|----------|---------------|--------|
|
|
29
|
+
| **Coupon calculation** | Discount amount and total correct | Test percentage AND fixed amount coupons separately |
|
|
30
|
+
| **Webhook resilience** | Order completes even with delayed webhook | Configure 5s delay, verify processing→complete transition |
|
|
31
|
+
| **Cart merge on login** | Guest cart merged into user cart | User cart takes priority for duplicate items |
|
|
32
|
+
| **Partial refund** | Refunded amount correct, order updated | Verify remaining amount, not just refund event |
|
|
33
|
+
|
|
34
|
+
### P2 — Nice to Have
|
|
35
|
+
|
|
36
|
+
| Scenario | What to Verify |
|
|
37
|
+
|----------|---------------|
|
|
38
|
+
| Multiple payment methods | Each method completes checkout |
|
|
39
|
+
| Guest checkout | Full flow without login |
|
|
40
|
+
| Order cancellation | Refund triggered, stock restored |
|
|
41
|
+
|
|
42
|
+
## Test Environment Gotchas
|
|
43
|
+
|
|
44
|
+
| Gotcha | Fix |
|
|
45
|
+
|--------|-----|
|
|
46
|
+
| Using real PG sandbox in CI | Use MSW (`setupServer`) for mock PG responses |
|
|
47
|
+
| Flaky tests from timing | Use `waitForSelector`/`waitForURL`, never `sleep` |
|
|
48
|
+
| Test data leaks between tests | Seed in `beforeAll`, clean in `afterAll` |
|
|
49
|
+
| Hardcoded test card numbers | Document: `4000000000000002` = decline |
|
|
50
|
+
|
|
51
|
+
## Related
|
|
52
|
+
|
|
53
|
+
See `commerce-patterns` skill for implementation gotchas (idempotency, atomic stock, payment state machine) that these tests verify.
|
|
54
|
+
|
|
55
|
+
## Done Criteria (K4)
|
|
56
|
+
|
|
57
|
+
- [ ] All P0 scenarios pass in CI
|
|
58
|
+
- [ ] P1 scenarios written and tracked
|
|
59
|
+
- [ ] Test data seeded/cleaned per suite
|
|
60
|
+
- [ ] No flaky tests (no arbitrary waits)
|
|
61
|
+
- [ ] Mock PG server configured for CI
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: event-comms
|
|
3
|
+
description: "Event communication automation — SMS via Aligo, email via Gmail OAuth, SNS posts for LinkedIn/Threads. Handles templates, BCC rules, and confirmation protocol."
|
|
4
|
+
triggers: [sms, aligo, gmail, event email, event sms, 문자 발송, 메일 발송, SNS 홍보]
|
|
5
|
+
priority: 65
|
|
6
|
+
---
|
|
7
|
+
# Event Communications
|
|
8
|
+
|
|
9
|
+
SMS, email, and SNS content generation for community events.
|
|
10
|
+
|
|
11
|
+
## SMS (Aligo API)
|
|
12
|
+
|
|
13
|
+
### Rules
|
|
14
|
+
- Auto-switch to LMS when >90 bytes
|
|
15
|
+
- Use `%고객명%` substitution
|
|
16
|
+
- Always test with `testmode_yn=Y` first
|
|
17
|
+
- **Emoji strictly forbidden** (EUC-KR encoding)
|
|
18
|
+
|
|
19
|
+
### SMS Types
|
|
20
|
+
|
|
21
|
+
| Timing | Type | Content |
|
|
22
|
+
|--------|------|---------|
|
|
23
|
+
| D-7~D-3 | Notification LMS | Event name, datetime, venue, fee, registration URL |
|
|
24
|
+
| D-3 | Confirmation SMS | Attendance confirmed + detailed venue |
|
|
25
|
+
| D-1 | Reminder SMS | Tomorrow schedule reminder + venue |
|
|
26
|
+
| D-Day | Day-of SMS | Today schedule reminder |
|
|
27
|
+
|
|
28
|
+
### Templates
|
|
29
|
+
|
|
30
|
+
**Notification LMS (D-7~D-3)**
|
|
31
|
+
```
|
|
32
|
+
%고객명%님 안녕하세요.
|
|
33
|
+
|
|
34
|
+
{event_name} {edition}회 안내드립니다.
|
|
35
|
+
|
|
36
|
+
일시: {date} {time}
|
|
37
|
+
장소: {venue}
|
|
38
|
+
참가비: {fee}
|
|
39
|
+
|
|
40
|
+
신청: {url}
|
|
41
|
+
|
|
42
|
+
{community_name}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Confirmation SMS (D-3)**
|
|
46
|
+
```
|
|
47
|
+
%고객명%님, {event_name} 참가가 확정되었습니다.
|
|
48
|
+
|
|
49
|
+
일시: {date} {time}
|
|
50
|
+
장소: {venue_detail}
|
|
51
|
+
|
|
52
|
+
당일 뵙겠습니다.
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Reminder SMS (D-1)**
|
|
56
|
+
```
|
|
57
|
+
%고객명%님, 내일 {event_name}이 있습니다.
|
|
58
|
+
|
|
59
|
+
일시: {date} {time}
|
|
60
|
+
장소: {venue}
|
|
61
|
+
|
|
62
|
+
내일 뵙겠습니다!
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Day-of SMS (D-Day)**
|
|
66
|
+
```
|
|
67
|
+
%고객명%님, 오늘 {time} {event_name}입니다.
|
|
68
|
+
|
|
69
|
+
장소: {venue}
|
|
70
|
+
|
|
71
|
+
오늘 뵙겠습니다!
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Email (Gmail OAuth 2.0)
|
|
75
|
+
|
|
76
|
+
### Rules
|
|
77
|
+
- **MUST use BCC** — never expose attendee emails to each other
|
|
78
|
+
- D-3 confirmation email includes: venue details, timetable, Slido link
|
|
79
|
+
|
|
80
|
+
### Confirmation Email Template (D-3)
|
|
81
|
+
```
|
|
82
|
+
Subject: [{event_name}] 참가 확정 안내
|
|
83
|
+
|
|
84
|
+
{attendee_name}님 안녕하세요.
|
|
85
|
+
|
|
86
|
+
{event_name} {edition}회 참가가 확정되었습니다.
|
|
87
|
+
|
|
88
|
+
■ 일시: {date} {time}
|
|
89
|
+
■ 장소: {venue_detail}
|
|
90
|
+
■ 프로그램:
|
|
91
|
+
{timetable}
|
|
92
|
+
|
|
93
|
+
■ 실시간 질문: {slido_link}
|
|
94
|
+
|
|
95
|
+
당일 뵙겠습니다.
|
|
96
|
+
감사합니다.
|
|
97
|
+
|
|
98
|
+
{community_name}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## SNS Posts
|
|
102
|
+
|
|
103
|
+
### Platform Tone
|
|
104
|
+
|
|
105
|
+
| Platform | Tone | Length | Style |
|
|
106
|
+
|----------|------|--------|-------|
|
|
107
|
+
| LinkedIn | Professional, formal | 300+ chars | Expert participation encouragement |
|
|
108
|
+
| Threads | Casual, hooking | 150-200 chars | "아직 안 봤어?" style |
|
|
109
|
+
|
|
110
|
+
### Post Types
|
|
111
|
+
|
|
112
|
+
| Timing | Type | Content |
|
|
113
|
+
|--------|------|---------|
|
|
114
|
+
| Open | Promo post | Event intro + CTA |
|
|
115
|
+
| D-14 | Deadline remind | Urgency + remaining spots |
|
|
116
|
+
| D+1 | Review post | Story → 3 insights → next event preview |
|
|
117
|
+
|
|
118
|
+
### LinkedIn Promo Template
|
|
119
|
+
```
|
|
120
|
+
{hook_sentence}
|
|
121
|
+
|
|
122
|
+
{event_name} {edition}회를 소개합니다.
|
|
123
|
+
|
|
124
|
+
📅 {date} {time}
|
|
125
|
+
📍 {venue}
|
|
126
|
+
|
|
127
|
+
이번 주제: {topic}
|
|
128
|
+
|
|
129
|
+
{speaker_intro}
|
|
130
|
+
|
|
131
|
+
{cta}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Threads Promo Template
|
|
135
|
+
```
|
|
136
|
+
{hook_casual}
|
|
137
|
+
|
|
138
|
+
{event_name} {edition}회 열린다!
|
|
139
|
+
|
|
140
|
+
{date} {time}
|
|
141
|
+
{venue_short}
|
|
142
|
+
|
|
143
|
+
{topic_casual}
|
|
144
|
+
|
|
145
|
+
{cta_casual}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Review Post Structure
|
|
149
|
+
1. Story (emotional hook)
|
|
150
|
+
2. Key insights (3 items)
|
|
151
|
+
3. Next event preview
|
|
152
|
+
4. Thank you + community link
|
|
153
|
+
|
|
154
|
+
## API Keys Required
|
|
155
|
+
|
|
156
|
+
| Key | Service | Required |
|
|
157
|
+
|-----|---------|----------|
|
|
158
|
+
| `ALIGO_API_KEY` | Aligo SMS | ✅ (for send) |
|
|
159
|
+
| `ALIGO_USER_ID` | Aligo SMS | ✅ (for send) |
|
|
160
|
+
| `ALIGO_SENDER` | Aligo SMS | ✅ (for send) |
|
|
161
|
+
| `GMAIL_CREDENTIALS_PATH` | Gmail OAuth | ✅ (for email) |
|