jfl 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +443 -145
- package/clawdbot-plugin/clawdbot.plugin.json +20 -0
- package/clawdbot-plugin/index.js +555 -0
- package/clawdbot-plugin/index.ts +582 -0
- package/clawdbot-skill/SKILL.md +33 -336
- package/clawdbot-skill/index.ts +491 -321
- package/clawdbot-skill/skill.json +4 -13
- package/dist/commands/clawdbot.d.ts +11 -0
- package/dist/commands/clawdbot.d.ts.map +1 -0
- package/dist/commands/clawdbot.js +215 -0
- package/dist/commands/clawdbot.js.map +1 -0
- package/dist/commands/context-hub.d.ts +5 -0
- package/dist/commands/context-hub.d.ts.map +1 -1
- package/dist/commands/context-hub.js +394 -28
- package/dist/commands/context-hub.js.map +1 -1
- package/dist/commands/gtm-process-update.d.ts +10 -0
- package/dist/commands/gtm-process-update.d.ts.map +1 -0
- package/dist/commands/gtm-process-update.js +101 -0
- package/dist/commands/gtm-process-update.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +278 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +32 -33
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/memory.d.ts +38 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +229 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/migrate-services.d.ts +8 -0
- package/dist/commands/migrate-services.d.ts.map +1 -0
- package/dist/commands/migrate-services.js +182 -0
- package/dist/commands/migrate-services.js.map +1 -0
- package/dist/commands/onboard.d.ts +24 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +663 -0
- package/dist/commands/onboard.js.map +1 -0
- package/dist/commands/openclaw.d.ts +56 -0
- package/dist/commands/openclaw.d.ts.map +1 -0
- package/dist/commands/openclaw.js +700 -0
- package/dist/commands/openclaw.js.map +1 -0
- package/dist/commands/orchestrate.d.ts +14 -0
- package/dist/commands/orchestrate.d.ts.map +1 -0
- package/dist/commands/orchestrate.js +270 -0
- package/dist/commands/orchestrate.js.map +1 -0
- package/dist/commands/profile.d.ts +46 -0
- package/dist/commands/profile.d.ts.map +1 -0
- package/dist/commands/profile.js +498 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/repair.d.ts.map +1 -1
- package/dist/commands/repair.js +37 -0
- package/dist/commands/repair.js.map +1 -1
- package/dist/commands/service-agent.d.ts +16 -0
- package/dist/commands/service-agent.d.ts.map +1 -0
- package/dist/commands/service-agent.js +375 -0
- package/dist/commands/service-agent.js.map +1 -0
- package/dist/commands/service-manager.d.ts +12 -0
- package/dist/commands/service-manager.d.ts.map +1 -0
- package/dist/commands/service-manager.js +967 -0
- package/dist/commands/service-manager.js.map +1 -0
- package/dist/commands/service-validate.d.ts +12 -0
- package/dist/commands/service-validate.d.ts.map +1 -0
- package/dist/commands/service-validate.js +611 -0
- package/dist/commands/service-validate.js.map +1 -0
- package/dist/commands/services-create.d.ts +15 -0
- package/dist/commands/services-create.d.ts.map +1 -0
- package/dist/commands/services-create.js +1452 -0
- package/dist/commands/services-create.js.map +1 -0
- package/dist/commands/services-scan.d.ts +13 -0
- package/dist/commands/services-scan.d.ts.map +1 -0
- package/dist/commands/services-scan.js +251 -0
- package/dist/commands/services-scan.js.map +1 -0
- package/dist/commands/services-sync-agents.d.ts +23 -0
- package/dist/commands/services-sync-agents.d.ts.map +1 -0
- package/dist/commands/services-sync-agents.js +207 -0
- package/dist/commands/services-sync-agents.js.map +1 -0
- package/dist/commands/services.d.ts +19 -0
- package/dist/commands/services.d.ts.map +1 -0
- package/dist/commands/services.js +742 -0
- package/dist/commands/services.js.map +1 -0
- package/dist/commands/session.d.ts +5 -1
- package/dist/commands/session.d.ts.map +1 -1
- package/dist/commands/session.js +68 -586
- package/dist/commands/session.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +17 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +75 -21
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate-settings.d.ts +37 -0
- package/dist/commands/validate-settings.d.ts.map +1 -0
- package/dist/commands/validate-settings.js +197 -0
- package/dist/commands/validate-settings.js.map +1 -0
- package/dist/commands/voice.d.ts +0 -1
- package/dist/commands/voice.d.ts.map +1 -1
- package/dist/commands/voice.js +16 -15
- package/dist/commands/voice.js.map +1 -1
- package/dist/index.js +395 -141
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-generator.d.ts +26 -0
- package/dist/lib/agent-generator.d.ts.map +1 -0
- package/dist/lib/agent-generator.js +331 -0
- package/dist/lib/agent-generator.js.map +1 -0
- package/dist/lib/memory-db.d.ts +102 -0
- package/dist/lib/memory-db.d.ts.map +1 -0
- package/dist/lib/memory-db.js +313 -0
- package/dist/lib/memory-db.js.map +1 -0
- package/dist/lib/memory-indexer.d.ts +47 -0
- package/dist/lib/memory-indexer.d.ts.map +1 -0
- package/dist/lib/memory-indexer.js +215 -0
- package/dist/lib/memory-indexer.js.map +1 -0
- package/dist/lib/memory-search.d.ts +41 -0
- package/dist/lib/memory-search.d.ts.map +1 -0
- package/dist/lib/memory-search.js +246 -0
- package/dist/lib/memory-search.js.map +1 -0
- package/dist/lib/openclaw-registry.d.ts +48 -0
- package/dist/lib/openclaw-registry.d.ts.map +1 -0
- package/dist/lib/openclaw-registry.js +181 -0
- package/dist/lib/openclaw-registry.js.map +1 -0
- package/dist/lib/openclaw-sdk.d.ts +107 -0
- package/dist/lib/openclaw-sdk.d.ts.map +1 -0
- package/dist/lib/openclaw-sdk.js +208 -0
- package/dist/lib/openclaw-sdk.js.map +1 -0
- package/dist/lib/peer-agent-generator.d.ts +44 -0
- package/dist/lib/peer-agent-generator.d.ts.map +1 -0
- package/dist/lib/peer-agent-generator.js +286 -0
- package/dist/lib/peer-agent-generator.js.map +1 -0
- package/dist/lib/service-dependencies.d.ts +44 -0
- package/dist/lib/service-dependencies.d.ts.map +1 -0
- package/dist/lib/service-dependencies.js +314 -0
- package/dist/lib/service-dependencies.js.map +1 -0
- package/dist/lib/service-detector.d.ts +61 -0
- package/dist/lib/service-detector.d.ts.map +1 -0
- package/dist/lib/service-detector.js +521 -0
- package/dist/lib/service-detector.js.map +1 -0
- package/dist/lib/service-gtm.d.ts +157 -0
- package/dist/lib/service-gtm.d.ts.map +1 -0
- package/dist/lib/service-gtm.js +786 -0
- package/dist/lib/service-gtm.js.map +1 -0
- package/dist/lib/service-mcp-base.d.ts +103 -0
- package/dist/lib/service-mcp-base.d.ts.map +1 -0
- package/dist/lib/service-mcp-base.js +263 -0
- package/dist/lib/service-mcp-base.js.map +1 -0
- package/dist/lib/service-utils.d.ts +103 -0
- package/dist/lib/service-utils.d.ts.map +1 -0
- package/dist/lib/service-utils.js +368 -0
- package/dist/lib/service-utils.js.map +1 -0
- package/dist/lib/skill-generator.d.ts +21 -0
- package/dist/lib/skill-generator.d.ts.map +1 -0
- package/dist/lib/skill-generator.js +253 -0
- package/dist/lib/skill-generator.js.map +1 -0
- package/dist/lib/stratus-client.d.ts +100 -0
- package/dist/lib/stratus-client.d.ts.map +1 -0
- package/dist/lib/stratus-client.js +255 -0
- package/dist/lib/stratus-client.js.map +1 -0
- package/dist/mcp/context-hub-mcp.js +135 -53
- package/dist/mcp/context-hub-mcp.js.map +1 -1
- package/dist/mcp/service-mcp-server.d.ts +12 -0
- package/dist/mcp/service-mcp-server.d.ts.map +1 -0
- package/dist/mcp/service-mcp-server.js +434 -0
- package/dist/mcp/service-mcp-server.js.map +1 -0
- package/dist/mcp/service-peer-mcp.d.ts +36 -0
- package/dist/mcp/service-peer-mcp.d.ts.map +1 -0
- package/dist/mcp/service-peer-mcp.js +220 -0
- package/dist/mcp/service-peer-mcp.js.map +1 -0
- package/dist/mcp/service-registry-mcp.d.ts +13 -0
- package/dist/mcp/service-registry-mcp.d.ts.map +1 -0
- package/dist/mcp/service-registry-mcp.js +330 -0
- package/dist/mcp/service-registry-mcp.js.map +1 -0
- package/dist/ui/banner.js +1 -1
- package/dist/ui/banner.js.map +1 -1
- package/dist/ui/context-hub-logs.d.ts +10 -0
- package/dist/ui/context-hub-logs.d.ts.map +1 -0
- package/dist/ui/context-hub-logs.js +175 -0
- package/dist/ui/context-hub-logs.js.map +1 -0
- package/dist/ui/service-dashboard.d.ts +11 -0
- package/dist/ui/service-dashboard.d.ts.map +1 -0
- package/dist/ui/service-dashboard.js +357 -0
- package/dist/ui/service-dashboard.js.map +1 -0
- package/dist/ui/services-manager.d.ts +11 -0
- package/dist/ui/services-manager.d.ts.map +1 -0
- package/dist/ui/services-manager.js +507 -0
- package/dist/ui/services-manager.js.map +1 -0
- package/dist/utils/auth-guard.d.ts.map +1 -1
- package/dist/utils/auth-guard.js +8 -9
- package/dist/utils/auth-guard.js.map +1 -1
- package/dist/utils/claude-md-generator.d.ts +10 -0
- package/dist/utils/claude-md-generator.d.ts.map +1 -0
- package/dist/utils/claude-md-generator.js +215 -0
- package/dist/utils/claude-md-generator.js.map +1 -0
- package/dist/utils/ensure-context-hub.d.ts +20 -0
- package/dist/utils/ensure-context-hub.d.ts.map +1 -0
- package/dist/utils/ensure-context-hub.js +65 -0
- package/dist/utils/ensure-context-hub.js.map +1 -0
- package/dist/utils/ensure-project.d.ts.map +1 -1
- package/dist/utils/ensure-project.js +3 -4
- package/dist/utils/ensure-project.js.map +1 -1
- package/dist/utils/jfl-config.d.ts +19 -0
- package/dist/utils/jfl-config.d.ts.map +1 -0
- package/dist/utils/jfl-config.js +112 -0
- package/dist/utils/jfl-config.js.map +1 -0
- package/dist/utils/jfl-migration.d.ts +29 -0
- package/dist/utils/jfl-migration.d.ts.map +1 -0
- package/dist/utils/jfl-migration.js +142 -0
- package/dist/utils/jfl-migration.js.map +1 -0
- package/dist/utils/jfl-paths.d.ts +55 -0
- package/dist/utils/jfl-paths.d.ts.map +1 -0
- package/dist/utils/jfl-paths.js +120 -0
- package/dist/utils/jfl-paths.js.map +1 -0
- package/dist/utils/settings-validator.d.ts +73 -0
- package/dist/utils/settings-validator.d.ts.map +1 -0
- package/dist/utils/settings-validator.js +222 -0
- package/dist/utils/settings-validator.js.map +1 -0
- package/package.json +19 -3
- package/scripts/commit-gtm.sh +56 -0
- package/scripts/commit-product.sh +68 -0
- package/scripts/context-query.sh +45 -0
- package/scripts/session/auto-commit.sh +297 -0
- package/scripts/session/jfl-doctor.sh +707 -0
- package/scripts/session/session-cleanup.sh +268 -0
- package/scripts/session/session-end.sh +198 -0
- package/scripts/session/session-init.sh +350 -0
- package/scripts/session/session-init.sh.backup +292 -0
- package/scripts/session/session-sync.sh +167 -0
- package/scripts/session/test-context-preservation.sh +160 -0
- package/scripts/session/test-critical-infrastructure.sh +293 -0
- package/scripts/session/test-experience-level.sh +336 -0
- package/scripts/session/test-session-cleanup.sh +268 -0
- package/scripts/session/test-session-sync.sh +320 -0
- package/scripts/voice-start.sh +36 -8
- package/scripts/where-am-i.sh +78 -0
- package/template/.claude/service-settings.json +32 -0
- package/template/.claude/settings.json +14 -1
- package/template/.claude/skills/end/SKILL.md +1780 -0
- package/template/.jfl/config.json +2 -1
- package/template/CLAUDE.md +1039 -134
- package/template/CLAUDE.md.bak +1187 -0
- package/template/scripts/commit-gtm.sh +56 -0
- package/template/scripts/commit-product.sh +68 -0
- package/template/scripts/migrate-to-branch-sessions.sh +201 -0
- package/template/scripts/session/auto-commit.sh +58 -6
- package/template/scripts/session/jfl-doctor.sh +137 -17
- package/template/scripts/session/session-cleanup.sh +268 -0
- package/template/scripts/session/session-end.sh +4 -0
- package/template/scripts/session/session-init.sh +253 -66
- package/template/scripts/session/test-critical-infrastructure.sh +293 -0
- package/template/scripts/session/test-experience-level.sh +336 -0
- package/template/scripts/session/test-session-cleanup.sh +268 -0
- package/template/scripts/session/test-session-sync.sh +320 -0
- package/template/scripts/where-am-i.sh +78 -0
- package/template/templates/service-agent/.claude/settings.json +32 -0
- package/template/templates/service-agent/CLAUDE.md +334 -0
- package/template/templates/service-agent/knowledge/ARCHITECTURE.md +115 -0
- package/template/templates/service-agent/knowledge/DEPLOYMENT.md +199 -0
- package/template/templates/service-agent/knowledge/RUNBOOK.md +412 -0
- package/template/templates/service-agent/knowledge/SERVICE_SPEC.md +77 -0
- package/dist/commands/session-mgmt.d.ts +0 -33
- package/dist/commands/session-mgmt.d.ts.map +0 -1
- package/dist/commands/session-mgmt.js +0 -404
- package/dist/commands/session-mgmt.js.map +0 -1
- package/template/scripts/session/auto-merge.sh +0 -325
package/template/CLAUDE.md
CHANGED
|
@@ -27,20 +27,40 @@ Don't make users fill out forms before they can build. Let them start immediatel
|
|
|
27
27
|
|
|
28
28
|
**Complete ALL steps before saying anything to the user.**
|
|
29
29
|
|
|
30
|
-
**1.
|
|
31
|
-
|
|
32
|
-
**2. Run session sync:**
|
|
30
|
+
**1. Run session sync:**
|
|
33
31
|
```bash
|
|
34
32
|
./scripts/session/session-sync.sh
|
|
35
33
|
```
|
|
36
34
|
|
|
37
|
-
**
|
|
35
|
+
**2. Run doctor check (ONLY for existing projects):**
|
|
36
|
+
|
|
37
|
+
**IMPORTANT: Skip doctor for fresh projects.** Detect fresh project:
|
|
38
38
|
```bash
|
|
39
|
-
|
|
39
|
+
# Fresh project indicators:
|
|
40
|
+
# - No git commits yet: git rev-list --count HEAD returns 0 or error
|
|
41
|
+
# - Empty knowledge docs: VISION.md has template text
|
|
42
|
+
# - No journal entries: .jfl/journal/ is empty
|
|
43
|
+
|
|
44
|
+
# Check if fresh
|
|
45
|
+
COMMIT_COUNT=$(git rev-list --count HEAD 2>/dev/null || echo "0")
|
|
46
|
+
if [[ "$COMMIT_COUNT" -gt "5" ]]; then
|
|
47
|
+
# Existing project - run doctor
|
|
48
|
+
./scripts/session/jfl-doctor.sh
|
|
49
|
+
# Ask user before continuing
|
|
50
|
+
# If warnings: "Doctor found issues: [list]. Want me to fix these?"
|
|
51
|
+
# If clean: "Doctor check passed. Ready to continue?"
|
|
52
|
+
# STOP AND WAIT for user response
|
|
53
|
+
# If approved: ./scripts/session/jfl-doctor.sh --fix
|
|
54
|
+
else
|
|
55
|
+
# Fresh project - skip doctor
|
|
56
|
+
echo "Fresh project detected, skipping doctor check."
|
|
57
|
+
fi
|
|
40
58
|
```
|
|
41
|
-
Note any warnings (orphaned worktrees, unmerged sessions, memory not initialized).
|
|
42
59
|
|
|
43
|
-
**
|
|
60
|
+
**For existing projects:** After running doctor, you MUST ask the user before continuing.
|
|
61
|
+
**For fresh projects:** Skip directly to step 3.
|
|
62
|
+
|
|
63
|
+
**3. Get unified context via MCP (REQUIRED):**
|
|
44
64
|
```
|
|
45
65
|
Call: mcp__jfl-context__context_get
|
|
46
66
|
```
|
|
@@ -50,56 +70,78 @@ This single call returns:
|
|
|
50
70
|
- Knowledge docs (vision, roadmap, narrative, thesis)
|
|
51
71
|
- Code file headers (@purpose tags)
|
|
52
72
|
|
|
73
|
+
**CRITICAL: Filter cross-project context pollution.**
|
|
74
|
+
|
|
75
|
+
Context Hub may return results from OTHER projects on the machine. ALWAYS verify context matches the current project:
|
|
76
|
+
|
|
77
|
+
1. Check the project path in journal entries
|
|
78
|
+
2. If journal paths don't match current directory, IGNORE them
|
|
79
|
+
3. If knowledge docs look like templates, this is a FRESH project
|
|
80
|
+
4. For fresh projects: Skip context_get entirely, start foundation questions
|
|
81
|
+
|
|
82
|
+
**Example of cross-project pollution (IGNORE THIS):**
|
|
83
|
+
```
|
|
84
|
+
Journal from: /Users/alectaggart/gatcha-toilet/.jfl/journal/...
|
|
85
|
+
Current project: /Users/alectaggart/case
|
|
86
|
+
→ THESE DON'T MATCH. Ignore the journal entry.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**For fresh projects (no commits, empty docs):**
|
|
90
|
+
- Skip context_get
|
|
91
|
+
- Skip doctor check
|
|
92
|
+
- Go straight to foundation questions (VISION, ROADMAP, etc.)
|
|
93
|
+
|
|
53
94
|
**DO NOT read individual markdown files.** The context MCP tool aggregates everything. This is why we built Context Hub.
|
|
54
95
|
|
|
55
|
-
**
|
|
96
|
+
**4. Show recent journal entries:**
|
|
56
97
|
```bash
|
|
57
98
|
cat .jfl/journal/*.jsonl 2>/dev/null | tail -10
|
|
58
99
|
```
|
|
59
100
|
|
|
60
|
-
**
|
|
101
|
+
**5. Run /hud to show project dashboard:**
|
|
61
102
|
```
|
|
62
103
|
Invoke: /hud skill
|
|
63
104
|
```
|
|
64
105
|
|
|
65
106
|
This displays the full status, pipeline, tasks, and guides next action.
|
|
66
107
|
|
|
67
|
-
**ONLY AFTER completing all
|
|
108
|
+
**ONLY AFTER completing all 5 steps**, respond to the user with the HUD output.
|
|
68
109
|
|
|
69
110
|
If you need to search for something specific later:
|
|
70
111
|
```
|
|
71
112
|
Call: mcp__jfl-context__context_search with query="your search"
|
|
72
113
|
```
|
|
73
114
|
|
|
74
|
-
|
|
115
|
+
## Session Management
|
|
75
116
|
|
|
76
|
-
|
|
117
|
+
JFL automatically manages session isolation. You don't need to worry about worktrees or CD commands - it's handled for you.
|
|
77
118
|
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
═══════════════════════════════════════════════════════════
|
|
81
|
-
CLAUDE: You MUST run: cd /path/to/worktree
|
|
82
|
-
═══════════════════════════════════════════════════════════
|
|
83
|
-
```
|
|
119
|
+
### How It Works
|
|
84
120
|
|
|
85
|
-
**
|
|
121
|
+
- **Single session**: You work directly on your branch (simple, fast)
|
|
122
|
+
- **Multiple sessions**: JFL creates isolated worktrees automatically (prevents conflicts)
|
|
123
|
+
- **Auto-commit**: Work is saved every 2 minutes (prevents data loss)
|
|
124
|
+
- **Auto-merge**: When you finish, work merges to your working branch automatically
|
|
86
125
|
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
cat .jfl/current-worktree.txt
|
|
90
|
-
```
|
|
126
|
+
### Session Branch
|
|
91
127
|
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
cd $(cat .jfl/current-worktree.txt)
|
|
95
|
-
```
|
|
128
|
+
Sessions branch from your working branch (default: `main`, configurable in `.jfl/config.json`):
|
|
96
129
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"working_branch": "develop"
|
|
133
|
+
}
|
|
100
134
|
```
|
|
101
135
|
|
|
102
|
-
|
|
136
|
+
Session branches are named: `session-<user>-<date>-<time>-<random>`
|
|
137
|
+
|
|
138
|
+
### Ending a Session
|
|
139
|
+
|
|
140
|
+
When user says "done", "that's it", or "/end":
|
|
141
|
+
- Run the `/end` skill to clean up properly
|
|
142
|
+
- This commits, merges, and pushes your work
|
|
143
|
+
|
|
144
|
+
If session crashes, uncommitted work is auto-saved via background auto-commit.
|
|
103
145
|
|
|
104
146
|
---
|
|
105
147
|
|
|
@@ -201,14 +243,21 @@ GOOD entry (useful):
|
|
|
201
243
|
}
|
|
202
244
|
```
|
|
203
245
|
|
|
204
|
-
### Per-
|
|
246
|
+
### Per-Branch Journal Files
|
|
247
|
+
|
|
248
|
+
**Journaling works on ANY branch** - sessions, main, feature branches, anywhere.
|
|
205
249
|
|
|
206
|
-
Each
|
|
250
|
+
Each branch writes to its own file to avoid merge conflicts:
|
|
207
251
|
```
|
|
208
|
-
.jfl/journal/<
|
|
252
|
+
.jfl/journal/<branch-name>.jsonl
|
|
209
253
|
```
|
|
210
254
|
|
|
211
|
-
|
|
255
|
+
Examples:
|
|
256
|
+
- Session branch: `.jfl/journal/session-goose-20260125-0240-bea0be.jsonl`
|
|
257
|
+
- Main branch: `.jfl/journal/main.jsonl`
|
|
258
|
+
- Feature branch: `.jfl/journal/feature-auth.jsonl`
|
|
259
|
+
|
|
260
|
+
The hooks automatically use your current branch name (via `git branch --show-current`).
|
|
212
261
|
|
|
213
262
|
### When to Write (MANDATORY TRIGGERS)
|
|
214
263
|
|
|
@@ -343,17 +392,47 @@ The memory pipeline indexes `.jfl/journal/` automatically. Entries become search
|
|
|
343
392
|
|
|
344
393
|
## CRITICAL: Synopsis Command (What Happened?)
|
|
345
394
|
|
|
346
|
-
**When anyone asks "what happened?" use synopsis
|
|
395
|
+
**When anyone asks "what happened?" or "what did X work on?" — use the synopsis command.**
|
|
396
|
+
|
|
397
|
+
This is the STANDARDIZED way to get work summaries. Don't manually string together git log, journal files, etc. Use this:
|
|
347
398
|
|
|
348
399
|
```bash
|
|
400
|
+
# From project root:
|
|
349
401
|
cd product/packages/memory && node dist/journal/cli.js synopsis [hours] [author]
|
|
350
402
|
|
|
351
403
|
# Examples:
|
|
352
|
-
node dist/journal/cli.js synopsis 24 # Last 24 hours
|
|
353
|
-
node dist/journal/cli.js synopsis
|
|
404
|
+
node dist/journal/cli.js synopsis 24 # Last 24 hours, all team
|
|
405
|
+
node dist/journal/cli.js synopsis 8 # Last 8 hours
|
|
406
|
+
node dist/journal/cli.js synopsis 24 hathbanger # What did hath do in 24 hours
|
|
407
|
+
node dist/journal/cli.js synopsis --author "Andrew" # Filter by git author name
|
|
354
408
|
```
|
|
355
409
|
|
|
356
|
-
|
|
410
|
+
### What It Returns
|
|
411
|
+
|
|
412
|
+
The synopsis aggregates:
|
|
413
|
+
1. **Journal entries** from all sessions/worktrees
|
|
414
|
+
2. **Git commits** from all branches
|
|
415
|
+
3. **File headers** (@purpose, @spec, @decision tags)
|
|
416
|
+
4. **Time audit** with category breakdown and multipliers
|
|
417
|
+
|
|
418
|
+
Output includes:
|
|
419
|
+
- Summary of work done (features, fixes, decisions)
|
|
420
|
+
- Time audit breakdown (infra vs features vs docs vs content)
|
|
421
|
+
- Per-team-member contribution
|
|
422
|
+
- Health checks (too much infra? not enough outreach?)
|
|
423
|
+
- Next steps from journal entries
|
|
424
|
+
- Incomplete/stubbed items
|
|
425
|
+
|
|
426
|
+
### When to Use
|
|
427
|
+
|
|
428
|
+
| Question | Command |
|
|
429
|
+
|----------|---------|
|
|
430
|
+
| "What happened today?" | `synopsis 24` |
|
|
431
|
+
| "What did Hath work on?" | `synopsis 48 hathbanger` |
|
|
432
|
+
| "What happened this week?" | `synopsis 168` |
|
|
433
|
+
| "Give me a status update" | `synopsis 24 --verbose` |
|
|
434
|
+
|
|
435
|
+
**IMPORTANT:** Every AI should use this exact command. Do NOT try to manually piece together journal + commits + headers yourself. The synopsis command does it correctly every time.
|
|
357
436
|
|
|
358
437
|
---
|
|
359
438
|
|
|
@@ -461,6 +540,130 @@ your-product-repo/ ← SEPARATE REPO (all code lives here)
|
|
|
461
540
|
|
|
462
541
|
---
|
|
463
542
|
|
|
543
|
+
## Contributor Setup (For JFL Developers Only)
|
|
544
|
+
|
|
545
|
+
> **Note:** This section is for people contributing to the JFL project itself.
|
|
546
|
+
> If you're a JFL user building your own product, skip this - you installed `jfl` from npm and it just works.
|
|
547
|
+
|
|
548
|
+
If you're contributing to JFL itself, follow this setup:
|
|
549
|
+
|
|
550
|
+
### 1. Clone through a GTM (Recommended)
|
|
551
|
+
|
|
552
|
+
```bash
|
|
553
|
+
# Create a GTM workspace
|
|
554
|
+
jfl init my-jfl-gtm
|
|
555
|
+
|
|
556
|
+
# During setup, add the JFL product repo as submodule:
|
|
557
|
+
# - Choose "Building a product"
|
|
558
|
+
# - Enter: https://github.com/402goose/just-fucking-launch.git
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
### 2. Run the dev setup script
|
|
562
|
+
|
|
563
|
+
```bash
|
|
564
|
+
cd my-jfl-gtm/product
|
|
565
|
+
./scripts/dev-setup.sh
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
This will:
|
|
569
|
+
- Install CLI dependencies
|
|
570
|
+
- Link `jfl` globally from this location
|
|
571
|
+
- Verify everything is working
|
|
572
|
+
|
|
573
|
+
### 3. Work in the submodule
|
|
574
|
+
|
|
575
|
+
All product code changes happen in `product/`:
|
|
576
|
+
|
|
577
|
+
```bash
|
|
578
|
+
# Make changes in product/
|
|
579
|
+
cd product/
|
|
580
|
+
# ... work on code ...
|
|
581
|
+
|
|
582
|
+
# Commit to product repo
|
|
583
|
+
git add . && git commit -m "feature: ..." && git push
|
|
584
|
+
|
|
585
|
+
# Update GTM's reference (optional, for tracking)
|
|
586
|
+
cd ..
|
|
587
|
+
git add product && git commit -m "Update product submodule"
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
### Why This Matters
|
|
591
|
+
|
|
592
|
+
- **Single source of truth**: The `jfl` command points to your local jfl-cli clone
|
|
593
|
+
- **No sync issues**: You're not juggling multiple clones
|
|
594
|
+
- **GTM context available**: While building, you have the full GTM toolkit
|
|
595
|
+
- **Clean commits**: Product commits go to product repo, GTM commits go to GTM repo
|
|
596
|
+
|
|
597
|
+
### CLI Location
|
|
598
|
+
|
|
599
|
+
The CLI is located at your jfl-cli clone (the parent directory of this GTM workspace).
|
|
600
|
+
|
|
601
|
+
To re-link after changes:
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
# Navigate to your jfl-cli directory
|
|
605
|
+
cd "$(git rev-parse --show-toplevel)"
|
|
606
|
+
yarn build
|
|
607
|
+
npm link
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
### 4. Development Guidelines
|
|
611
|
+
|
|
612
|
+
**NEVER hardcode user-specific paths in scripts or code.**
|
|
613
|
+
|
|
614
|
+
This causes failures for other team members and creates bad UX if accidentally distributed.
|
|
615
|
+
|
|
616
|
+
**DON'T:**
|
|
617
|
+
```bash
|
|
618
|
+
WHISPER_SERVER="/Users/alectaggart/CascadeProjects/..."
|
|
619
|
+
PROJECT_PATH="/Users/andrewhathaway/code/..."
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
**DO:**
|
|
623
|
+
```bash
|
|
624
|
+
# Use relative paths from script location
|
|
625
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
626
|
+
PROJECT_ROOT="$(git -C "$SCRIPT_DIR" rev-parse --show-toplevel)"
|
|
627
|
+
|
|
628
|
+
# Use environment variables with sensible defaults
|
|
629
|
+
WHISPER_SERVER="${WHISPER_SERVER_PATH:-$PROJECT_ROOT/../jfl-platform/packages/whisper-server/build/whisper-stream-server}"
|
|
630
|
+
|
|
631
|
+
# Auto-detect with clear error messages
|
|
632
|
+
POSSIBLE_PATHS=(
|
|
633
|
+
"$PROJECT_ROOT/../jfl-platform/..."
|
|
634
|
+
"$HOME/code/goose/jfl/jfl-platform/..."
|
|
635
|
+
)
|
|
636
|
+
|
|
637
|
+
for path in "${POSSIBLE_PATHS[@]}"; do
|
|
638
|
+
if [[ -x "$path" ]]; then
|
|
639
|
+
WHISPER_SERVER="$path"
|
|
640
|
+
break
|
|
641
|
+
fi
|
|
642
|
+
done
|
|
643
|
+
|
|
644
|
+
if [[ -z "$WHISPER_SERVER" ]]; then
|
|
645
|
+
echo "Error: Whisper server not found."
|
|
646
|
+
echo "Set WHISPER_SERVER_PATH or ensure jfl-platform is at ../jfl-platform"
|
|
647
|
+
exit 1
|
|
648
|
+
fi
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
**Path resolution best practices:**
|
|
652
|
+
- Compute paths relative to `__dirname` or `import.meta.url` in TypeScript/JavaScript
|
|
653
|
+
- Use `git rev-parse --show-toplevel` to find repo root in bash scripts
|
|
654
|
+
- Provide environment variable overrides for flexibility
|
|
655
|
+
- Show helpful error messages listing what was tried
|
|
656
|
+
- Test scripts on a different machine/user before committing
|
|
657
|
+
|
|
658
|
+
**Before committing scripts:**
|
|
659
|
+
```bash
|
|
660
|
+
# Check for hardcoded paths
|
|
661
|
+
grep -r "Users/alectaggart\|Users/andrewhathaway" scripts/ | grep -v "## Example\|# DON'T"
|
|
662
|
+
# Should return nothing (except documentation examples)
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
---
|
|
666
|
+
|
|
464
667
|
## Understanding the Project Setup
|
|
465
668
|
|
|
466
669
|
**Before doing any work, understand the setup:**
|
|
@@ -529,40 +732,236 @@ Once you understand their setup, save it:
|
|
|
529
732
|
|
|
530
733
|
## Working Modes
|
|
531
734
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
735
|
+
### Mode: Building Product
|
|
736
|
+
|
|
737
|
+
You're building the product. Code lives in the product repo (linked as submodule).
|
|
738
|
+
|
|
739
|
+
```
|
|
740
|
+
this-gtm/ your-product-repo/
|
|
741
|
+
├── product/ ──────────────→ ├── src/
|
|
742
|
+
├── knowledge/ ├── cli/
|
|
743
|
+
├── content/ ├── platform/
|
|
744
|
+
├── suggestions/ └── package.json
|
|
745
|
+
└── CLAUDE.md
|
|
746
|
+
```
|
|
747
|
+
|
|
748
|
+
**Behavior:**
|
|
749
|
+
- Code changes go to `product/` (commits to product repo)
|
|
750
|
+
- GTM changes (knowledge/, content/) stay in GTM repo
|
|
751
|
+
- When editing code, you're in the submodule context
|
|
752
|
+
- `git push` from `product/` pushes to product repo
|
|
753
|
+
|
|
754
|
+
**IMPORTANT - Code Routing:**
|
|
755
|
+
```bash
|
|
756
|
+
# When you make code changes:
|
|
757
|
+
cd product/
|
|
758
|
+
git add . && git commit -m "feature: ..." && git push
|
|
759
|
+
cd ..
|
|
760
|
+
git add product && git commit -m "Update product submodule"
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
If someone tries to create code files outside `product/`, warn:
|
|
764
|
+
```
|
|
765
|
+
This looks like product code, but you're in the GTM repo.
|
|
766
|
+
Product code should go in the product/ submodule.
|
|
767
|
+
Want me to create this in product/ instead?
|
|
768
|
+
```
|
|
769
|
+
|
|
770
|
+
### Mode: GTM Only
|
|
771
|
+
|
|
772
|
+
They don't touch code. Team handles product.
|
|
773
|
+
|
|
774
|
+
```
|
|
775
|
+
this-repo/
|
|
776
|
+
├── knowledge/ ← Strategic context
|
|
777
|
+
├── content/ ← What they create
|
|
778
|
+
├── product/SPEC.md ← Reference from team
|
|
779
|
+
└── (no code)
|
|
780
|
+
```
|
|
781
|
+
|
|
782
|
+
**Behavior:**
|
|
783
|
+
- Never suggest code changes
|
|
784
|
+
- Focus on content, brand, outreach
|
|
785
|
+
- Reference spec but don't modify product
|
|
786
|
+
- Capture feedback for product team in suggestions/
|
|
787
|
+
|
|
788
|
+
### Mode: Contributor
|
|
789
|
+
|
|
790
|
+
They have a piece of the work. Team gave them context.
|
|
791
|
+
|
|
792
|
+
```
|
|
793
|
+
this-repo/
|
|
794
|
+
├── product/SPEC.md ← From team
|
|
795
|
+
├── knowledge/BRAND*.md ← Guidelines
|
|
796
|
+
└── their-work/ ← What they're doing
|
|
797
|
+
```
|
|
798
|
+
|
|
799
|
+
**Behavior:**
|
|
800
|
+
- Work within their scope
|
|
801
|
+
- Don't change shared docs without flagging
|
|
802
|
+
- Route suggestions through proper channels
|
|
803
|
+
- Ask: "Should I update the spec or suggest this to the team?"
|
|
804
|
+
|
|
805
|
+
---
|
|
806
|
+
|
|
807
|
+
## Detecting Mode Changes
|
|
808
|
+
|
|
809
|
+
People's roles evolve. Watch for signals:
|
|
810
|
+
|
|
811
|
+
| Signal | What It Means |
|
|
812
|
+
|--------|---------------|
|
|
813
|
+
| "I need to update the code" | They need product repo access - add submodule if not present |
|
|
814
|
+
| "The team changed the spec" | Pull latest in product submodule |
|
|
815
|
+
| "I'm taking over the product" | Mode change: GTM-only → building-product (add submodule) |
|
|
816
|
+
| "Someone else is handling X now" | Scope narrowing, might become GTM-only |
|
|
817
|
+
|
|
818
|
+
When mode changes, update `.jfl/config.json` and confirm:
|
|
819
|
+
```
|
|
820
|
+
Sounds like you're now handling the product directly.
|
|
821
|
+
Do you have a product repo? I'll add it as a submodule at product/
|
|
822
|
+
```
|
|
537
823
|
|
|
538
|
-
**
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
824
|
+
**Adding a product repo to existing GTM:**
|
|
825
|
+
```bash
|
|
826
|
+
git submodule add <product-repo-url> product
|
|
827
|
+
git commit -m "Add product submodule"
|
|
828
|
+
```
|
|
542
829
|
|
|
543
830
|
---
|
|
544
831
|
|
|
545
832
|
## Starting a New Project (Foundation Empty)
|
|
546
833
|
|
|
547
|
-
When knowledge docs are empty,
|
|
834
|
+
When knowledge docs are templates/empty, don't ask open-ended questions like "What do you want to build?"
|
|
835
|
+
|
|
836
|
+
**First, understand who you're talking to:**
|
|
837
|
+
|
|
838
|
+
```
|
|
839
|
+
Before we dive in - what's your role?
|
|
840
|
+
|
|
841
|
+
1. Founder (I'm building this thing)
|
|
842
|
+
2. Developer (I'm building FOR someone)
|
|
843
|
+
3. Marketing/Content (I'm telling the story)
|
|
844
|
+
4. Sales/BD (I'm selling it)
|
|
845
|
+
5. Product (I'm defining what we build)
|
|
846
|
+
6. Other
|
|
847
|
+
```
|
|
848
|
+
|
|
849
|
+
**Adjust based on role:**
|
|
850
|
+
|
|
851
|
+
| Role | Focus On | Don't Ask About |
|
|
852
|
+
|------|----------|-----------------|
|
|
853
|
+
| Non-technical founder | Vision, market, customers | Stack, architecture |
|
|
854
|
+
| Technical founder | Everything | Nothing - they can handle it |
|
|
855
|
+
| Developer | Implementation, specs | Business model, pricing |
|
|
856
|
+
| Marketing | Brand, messaging, content | Technical details |
|
|
857
|
+
| Sales | Pitch, objections, CRM | Code |
|
|
858
|
+
| Product | Features, roadmap, users | Implementation details |
|
|
859
|
+
|
|
860
|
+
**Then pull them through foundation:**
|
|
861
|
+
|
|
862
|
+
```
|
|
863
|
+
Got it. Let's get your foundation set up.
|
|
864
|
+
|
|
865
|
+
What are you building and who is it for?
|
|
866
|
+
(2-3 sentences is fine. Send me anything - docs,
|
|
867
|
+
screenshots, voice notes - I'll process it.)
|
|
868
|
+
```
|
|
869
|
+
|
|
870
|
+
For non-technical people, don't ask:
|
|
871
|
+
- "What's the stack?"
|
|
872
|
+
- "Next.js or something else?"
|
|
873
|
+
- Technical architecture questions
|
|
548
874
|
|
|
549
|
-
|
|
875
|
+
Instead: "I'll handle the technical side. You focus on the vision and who you're building for."
|
|
550
876
|
|
|
551
|
-
|
|
552
|
-
2. **ROADMAP.md** - When do you want to ship? MVP? Phases? Hard deadlines?
|
|
553
|
-
3. **NARRATIVE.md** - Casual pitch? Before/after? Key words? Emotional hook?
|
|
554
|
-
4. **THESIS.md** - Why will YOU win? What insight? Unfair advantage? Why now?
|
|
877
|
+
When they answer, **write it to the file immediately**:
|
|
555
878
|
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
879
|
+
```python
|
|
880
|
+
# Update knowledge/VISION.md with what they said
|
|
881
|
+
# Replace placeholder content with real content
|
|
882
|
+
# Keep Status: EMERGENT until they explicitly nail it
|
|
883
|
+
```
|
|
884
|
+
|
|
885
|
+
Then continue:
|
|
562
886
|
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
887
|
+
```
|
|
888
|
+
Got it - saved to your VISION.md.
|
|
889
|
+
|
|
890
|
+
Next - when do you want to ship? Any key milestones?
|
|
891
|
+
```
|
|
892
|
+
|
|
893
|
+
**How to detect template vs filled:**
|
|
894
|
+
- Check for "Status: EMERGENT" with empty "The Vision" section
|
|
895
|
+
- Check for placeholder text like "{fill this in}"
|
|
896
|
+
- If real content exists, it's been filled
|
|
897
|
+
|
|
898
|
+
**Pull them through each doc in order. Don't skip. Don't ask open-ended "what do you want to do?"**
|
|
899
|
+
|
|
900
|
+
### VISION.md Questions:
|
|
901
|
+
Even if vision is "emergent", capture what they have. It evolves through building.
|
|
902
|
+
```
|
|
903
|
+
1. What are you building? (2-3 sentences, doesn't need to be perfect)
|
|
904
|
+
2. Who is it for? (specific person, not "everyone")
|
|
905
|
+
3. What problem does it solve for them?
|
|
906
|
+
4. If it works perfectly, what does their life look like?
|
|
907
|
+
5. What's your rough one-liner? (we can refine it later)
|
|
908
|
+
```
|
|
909
|
+
Don't let them skip because "I haven't figured it out yet." Get SOMETHING down. It'll sharpen through building.
|
|
910
|
+
|
|
911
|
+
**For each question:**
|
|
912
|
+
- Give examples/suggestions based on what you know about their project
|
|
913
|
+
- Always offer an out: "Or if you're not sure, we can keep going and let it emerge"
|
|
914
|
+
|
|
915
|
+
Example:
|
|
916
|
+
```
|
|
917
|
+
What's your rough one-liner?
|
|
918
|
+
|
|
919
|
+
Some options based on what you've told me:
|
|
920
|
+
- "Legal docs for founders, without the lawyer"
|
|
921
|
+
- "Spin up contracts in minutes, not days"
|
|
922
|
+
- "Your startup's legal co-pilot"
|
|
923
|
+
|
|
924
|
+
Or not sure yet? That's fine - we can refine it as we build.
|
|
925
|
+
```
|
|
926
|
+
|
|
927
|
+
### ROADMAP.md Questions:
|
|
928
|
+
```
|
|
929
|
+
1. When do you want to ship? (date)
|
|
930
|
+
2. What's the first thing that needs to work? (MVP)
|
|
931
|
+
3. What are the phases? (usually: foundation → MVP → launch → iterate)
|
|
932
|
+
4. Any hard deadlines? (demo day, funding, announcement)
|
|
933
|
+
```
|
|
934
|
+
|
|
935
|
+
### NARRATIVE.md Questions:
|
|
936
|
+
```
|
|
937
|
+
1. How would you explain this at a party? (casual pitch)
|
|
938
|
+
2. What's the before/after? (their life before vs after)
|
|
939
|
+
3. What words do you want associated with this? (3-5 words)
|
|
940
|
+
4. What's the emotional hook? (fear, aspiration, frustration, hope)
|
|
941
|
+
```
|
|
942
|
+
|
|
943
|
+
### THESIS.md Questions:
|
|
944
|
+
```
|
|
945
|
+
1. Why will YOU win? (not just anyone - you specifically)
|
|
946
|
+
2. What do you know that others don't? (insight)
|
|
947
|
+
3. What's your unfair advantage? (skills, access, timing)
|
|
948
|
+
4. Why now? (what changed that makes this possible/needed)
|
|
949
|
+
```
|
|
950
|
+
|
|
951
|
+
### BRAND Questions (after foundation):
|
|
952
|
+
```
|
|
953
|
+
1. What's the vibe? (professional, playful, bold, minimal, techy, human)
|
|
954
|
+
2. Any brands you admire the look of?
|
|
955
|
+
3. Colors that feel right? Or colors to avoid?
|
|
956
|
+
4. Any existing assets? (logo, colors already chosen)
|
|
957
|
+
```
|
|
958
|
+
|
|
959
|
+
**Flow:**
|
|
960
|
+
1. VISION → ROADMAP → NARRATIVE → THESIS (don't skip ANY)
|
|
961
|
+
2. Check ALL FOUR before moving on
|
|
962
|
+
3. Then ask: "Foundation is set. Want to work on brand/design next, or jump into building?"
|
|
963
|
+
4. Write to each file as you go. Don't wait.
|
|
964
|
+
5. After each doc, summarize what you captured and confirm.
|
|
566
965
|
|
|
567
966
|
---
|
|
568
967
|
|
|
@@ -570,67 +969,270 @@ When knowledge docs are empty, pull them through foundation in order. Don't ask
|
|
|
570
969
|
|
|
571
970
|
**⚠️ ALWAYS establish brand direction before writing UI code**
|
|
572
971
|
|
|
573
|
-
|
|
574
|
-
1. `knowledge/BRAND_DECISIONS.md` - finalized choices
|
|
575
|
-
2. `knowledge/BRAND_BRIEF.md` - brand inputs
|
|
576
|
-
3. `knowledge/VOICE_AND_TONE.md` - personality/feel
|
|
972
|
+
Before writing ANY code with visual elements (React, HTML, CSS, landing pages, forms, etc.):
|
|
577
973
|
|
|
578
|
-
**
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
974
|
+
**1. Check for explicit brand decisions (in order):**
|
|
975
|
+
```
|
|
976
|
+
1. knowledge/BRAND_DECISIONS.md - finalized choices
|
|
977
|
+
2. knowledge/BRAND_BRIEF.md - brand inputs
|
|
978
|
+
3. knowledge/VOICE_AND_TONE.md - personality/feel
|
|
979
|
+
```
|
|
980
|
+
|
|
981
|
+
**2. If no explicit brand docs, INFER from foundation:**
|
|
982
|
+
```
|
|
983
|
+
Read NARRATIVE.md and VISION.md to extract:
|
|
984
|
+
- Tone: Is it serious? Playful? Bold? Minimal?
|
|
985
|
+
- Audience: Who is this for? What do they expect?
|
|
986
|
+
- Positioning: Premium? Accessible? Techy? Human?
|
|
987
|
+
|
|
988
|
+
Example:
|
|
989
|
+
- "Legal docs for founders" → Professional but approachable, not stuffy
|
|
990
|
+
- "Self-serve" → Clean, simple, minimal friction
|
|
991
|
+
- Founders as audience → Modern, fast, no-nonsense
|
|
992
|
+
```
|
|
993
|
+
|
|
994
|
+
**3. Confirm your inference and gather references:**
|
|
995
|
+
```
|
|
996
|
+
Based on your vision and narrative, I'm thinking:
|
|
997
|
+
- Vibe: Professional but approachable (not corporate stuffy)
|
|
998
|
+
- Mode: Light (cleaner for legal docs)
|
|
999
|
+
- Colors: Neutral with one accent (trustworthy, not flashy)
|
|
1000
|
+
|
|
1001
|
+
Sound right? Or different direction?
|
|
1002
|
+
|
|
1003
|
+
Also - any sites or products you like the look/feel of?
|
|
1004
|
+
Drop a link or screenshot and I'll match that vibe.
|
|
1005
|
+
```
|
|
1006
|
+
|
|
1007
|
+
**References to gather:**
|
|
1008
|
+
- **Aesthetic references:** "Any sites whose design you love?"
|
|
1009
|
+
- **Functional references:** "Any products that do something similar well?"
|
|
1010
|
+
- **Anti-references:** "Anything you've seen that you hate?"
|
|
1011
|
+
|
|
1012
|
+
Store references in `references/` folder or note links in `product/SPEC.md` under a References section.
|
|
582
1013
|
|
|
583
|
-
|
|
584
|
-
-
|
|
585
|
-
-
|
|
586
|
-
-
|
|
587
|
-
-
|
|
1014
|
+
If they share a link, fetch it and extract:
|
|
1015
|
+
- Color palette
|
|
1016
|
+
- Typography style
|
|
1017
|
+
- Layout patterns
|
|
1018
|
+
- Component patterns
|
|
1019
|
+
- Overall vibe
|
|
588
1020
|
|
|
589
|
-
**
|
|
590
|
-
|
|
1021
|
+
**If fetch is blocked (403, timeout, etc.):**
|
|
1022
|
+
```
|
|
1023
|
+
That site blocked my request.
|
|
1024
|
+
|
|
1025
|
+
Can you screenshot it? Or use Claude Chrome to fetch it -
|
|
1026
|
+
it can navigate there directly.
|
|
1027
|
+
```
|
|
1028
|
+
|
|
1029
|
+
If they share a screenshot, analyze it for the same.
|
|
1030
|
+
|
|
1031
|
+
**4. Use the right tools to build:**
|
|
1032
|
+
- Run `/ui-skills` for opinionated UI constraints
|
|
1033
|
+
- Run `/web-interface-guidelines` for Vercel design patterns
|
|
1034
|
+
- Run `/rams` for accessibility review after building
|
|
1035
|
+
|
|
1036
|
+
**5. NEVER do these:**
|
|
1037
|
+
- Use another project's styling as a default
|
|
591
1038
|
- Assume dark theme without reason
|
|
592
|
-
- Pick random colors without basis
|
|
1039
|
+
- Pick random colors (green, purple, etc.) without basis
|
|
593
1040
|
- Build UI "to get started" and "refine later"
|
|
594
1041
|
|
|
595
|
-
|
|
1042
|
+
**If they say "just build something":**
|
|
1043
|
+
```
|
|
1044
|
+
Let me infer from your docs...
|
|
1045
|
+
|
|
1046
|
+
[Read NARRATIVE + VISION, propose direction, confirm]
|
|
1047
|
+
```
|
|
1048
|
+
|
|
1049
|
+
**Why this matters:** Brand direction exists in the foundation docs even if not explicit. Extract it, confirm it, then build with intention.
|
|
596
1050
|
|
|
597
1051
|
---
|
|
598
1052
|
|
|
599
1053
|
## Product Specs: The Living Build Document
|
|
600
1054
|
|
|
601
|
-
When building a product
|
|
1055
|
+
When building a product (not just content or brand work), maintain a product spec.
|
|
602
1056
|
|
|
603
|
-
**
|
|
1057
|
+
**1. Check for existing spec:**
|
|
1058
|
+
```
|
|
1059
|
+
product/SPEC.md - main product spec
|
|
1060
|
+
product/[feature].md - feature-specific specs
|
|
1061
|
+
```
|
|
1062
|
+
|
|
1063
|
+
**2. If no spec exists and they're building product, create one:**
|
|
1064
|
+
|
|
1065
|
+
```markdown
|
|
1066
|
+
# [Product Name] - Spec
|
|
1067
|
+
|
|
1068
|
+
## What We're Building
|
|
1069
|
+
{2-3 sentences - what is this?}
|
|
1070
|
+
|
|
1071
|
+
## Who It's For
|
|
1072
|
+
{specific user, not "everyone"}
|
|
1073
|
+
|
|
1074
|
+
## Core Features
|
|
1075
|
+
| Feature | Status | Notes |
|
|
1076
|
+
|---------|--------|-------|
|
|
1077
|
+
| {feature} | planned/building/done | |
|
|
1078
|
+
|
|
1079
|
+
## Tech Stack
|
|
1080
|
+
{what we're using to build it}
|
|
1081
|
+
|
|
1082
|
+
## Current Focus
|
|
1083
|
+
{what we're working on right now}
|
|
1084
|
+
|
|
1085
|
+
## Decisions Made
|
|
1086
|
+
| Decision | Choice | Why | Date |
|
|
1087
|
+
|----------|--------|-----|------|
|
|
1088
|
+
| {decision} | {choice} | {reasoning} | |
|
|
604
1089
|
|
|
605
|
-
|
|
1090
|
+
## Open Questions
|
|
1091
|
+
- {things we haven't figured out yet}
|
|
606
1092
|
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
1093
|
+
## References
|
|
1094
|
+
| Type | Name | Link/Note | What We Like |
|
|
1095
|
+
|------|------|-----------|--------------|
|
|
1096
|
+
| aesthetic | {site} | {url} | {what to copy} |
|
|
1097
|
+
| functional | {product} | {url} | {feature to emulate} |
|
|
1098
|
+
| anti | {site} | {url} | {what to avoid} |
|
|
1099
|
+
```
|
|
1100
|
+
|
|
1101
|
+
**3. Reference the spec when building:**
|
|
1102
|
+
- Before starting work, read `product/SPEC.md`
|
|
1103
|
+
- Check what's already been decided
|
|
1104
|
+
- Check current focus and priorities
|
|
1105
|
+
- Don't re-ask questions that have answers in the spec
|
|
1106
|
+
|
|
1107
|
+
**4. Update the spec as you build:**
|
|
1108
|
+
- Feature completed? Update status to `done`
|
|
1109
|
+
- Made a decision? Add to Decisions table
|
|
1110
|
+
- Scope changed? Update Core Features
|
|
1111
|
+
- New questions? Add to Open Questions
|
|
1112
|
+
- Tech choice made? Update Tech Stack
|
|
611
1113
|
|
|
612
|
-
**Spec vs Foundation:**
|
|
1114
|
+
**5. Spec vs Foundation docs:**
|
|
613
1115
|
| Doc | Purpose | Updates |
|
|
614
1116
|
|-----|---------|---------|
|
|
615
|
-
| VISION.md | Why we're building | Rarely |
|
|
616
|
-
| NARRATIVE.md | How we talk about it | Evolves |
|
|
617
|
-
| product/SPEC.md | What we're building |
|
|
1117
|
+
| VISION.md | Why we're building | Rarely changes |
|
|
1118
|
+
| NARRATIVE.md | How we talk about it | Evolves with positioning |
|
|
1119
|
+
| product/SPEC.md | What we're building | Updates every session |
|
|
1120
|
+
|
|
1121
|
+
The spec is the source of truth for implementation. Keep it current.
|
|
1122
|
+
|
|
1123
|
+
**Example flow:**
|
|
1124
|
+
```
|
|
1125
|
+
User: "Let's build the contract generator"
|
|
1126
|
+
|
|
1127
|
+
Claude: *reads product/SPEC.md*
|
|
1128
|
+
"Picking up from the spec - we have the basic form done,
|
|
1129
|
+
next up is the PDF export. The spec says we're using
|
|
1130
|
+
@react-pdf/renderer. Want to continue there?"
|
|
1131
|
+
|
|
1132
|
+
*after building*
|
|
1133
|
+
Claude: *updates product/SPEC.md*
|
|
1134
|
+
- PDF export: done
|
|
1135
|
+
- Added decision: "PDF styling matches brand colors"
|
|
1136
|
+
```
|
|
1137
|
+
|
|
1138
|
+
**IMPORTANT: Don't skip to "what do you want to work on?" until foundation is COMPLETE.**
|
|
1139
|
+
|
|
1140
|
+
Before showing status/HUD or asking what to build, check:
|
|
1141
|
+
```
|
|
1142
|
+
VISION.md - has real content? (not just template)
|
|
1143
|
+
ROADMAP.md - has dates and phases?
|
|
1144
|
+
NARRATIVE.md - has story/messaging?
|
|
1145
|
+
THESIS.md - has why you'll win?
|
|
1146
|
+
```
|
|
1147
|
+
|
|
1148
|
+
If ANY are missing, say:
|
|
1149
|
+
```
|
|
1150
|
+
"Before we dive in, let's finish your foundation.
|
|
1151
|
+
We have VISION and ROADMAP, but still need NARRATIVE and THESIS.
|
|
1152
|
+
These are quick - let me walk you through them."
|
|
1153
|
+
```
|
|
1154
|
+
|
|
1155
|
+
Then complete the missing docs. THEN show status and ask what to build.
|
|
1156
|
+
|
|
1157
|
+
**Date handling:**
|
|
1158
|
+
When someone gives a date without a year (e.g., "Jan 30"):
|
|
1159
|
+
- If that date has passed this year → assume NEXT year
|
|
1160
|
+
- If that date hasn't happened yet → assume THIS year
|
|
1161
|
+
- Always confirm: "Jan 30, 2026 - that's X days from now. Sound right?"
|
|
1162
|
+
|
|
1163
|
+
Never assume a past date for a launch/ship date. People don't ship in the past.
|
|
1164
|
+
|
|
1165
|
+
**Then gather build context:**
|
|
1166
|
+
|
|
1167
|
+
```
|
|
1168
|
+
Foundation is set. Before we build:
|
|
1169
|
+
|
|
1170
|
+
1. Any existing repos or code to build on?
|
|
1171
|
+
2. References or examples you like?
|
|
1172
|
+
3. [Specific question based on what they're building]
|
|
1173
|
+
```
|
|
1174
|
+
|
|
1175
|
+
If they have repos/references:
|
|
1176
|
+
- Add as submodules: `git submodule add <url> references/<name>`
|
|
1177
|
+
- Or clone to `references/` folder
|
|
1178
|
+
- Now you have context to build smarter
|
|
1179
|
+
|
|
1180
|
+
**Check for GitHub remote:**
|
|
1181
|
+
```bash
|
|
1182
|
+
git remote -v
|
|
1183
|
+
```
|
|
1184
|
+
|
|
1185
|
+
If no remote configured, offer to create one:
|
|
1186
|
+
```
|
|
1187
|
+
No GitHub repo yet. Want me to create one?
|
|
1188
|
+
|
|
1189
|
+
I can run:
|
|
1190
|
+
gh repo create [name] --private --source=. --push
|
|
1191
|
+
|
|
1192
|
+
Just let me know the name (and if you want it public or private).
|
|
1193
|
+
```
|
|
618
1194
|
|
|
619
|
-
|
|
620
|
-
- Check VISION.md, ROADMAP.md, NARRATIVE.md, THESIS.md all have real content
|
|
621
|
-
- If any are missing, complete them first before asking "what to build?"
|
|
622
|
-
- Date handling: Dates without year assume future (next year if passed this year)
|
|
1195
|
+
This uses their local `gh` CLI - no platform account needed.
|
|
623
1196
|
|
|
624
1197
|
---
|
|
625
1198
|
|
|
626
1199
|
## Session Feedback
|
|
627
1200
|
|
|
628
|
-
Every few sessions
|
|
1201
|
+
Every few sessions (or at natural breakpoints), ask:
|
|
629
1202
|
|
|
630
|
-
|
|
631
|
-
|
|
1203
|
+
```
|
|
1204
|
+
Quick check - how's JFL doing this session? (0-5)
|
|
1205
|
+
|
|
1206
|
+
0 = broken/frustrating
|
|
1207
|
+
3 = fine
|
|
1208
|
+
5 = amazing
|
|
1209
|
+
```
|
|
1210
|
+
|
|
1211
|
+
**If 0-2 (bad):**
|
|
1212
|
+
```
|
|
1213
|
+
Sorry to hear that. What went wrong?
|
|
1214
|
+
(I'll log this to help improve JFL)
|
|
1215
|
+
```
|
|
1216
|
+
|
|
1217
|
+
Capture to `.jfl/feedback.jsonl`:
|
|
1218
|
+
```json
|
|
1219
|
+
{"date": "2024-01-18", "rating": 1, "issue": "kept asking open-ended questions", "session_context": "onboarding new project"}
|
|
1220
|
+
```
|
|
1221
|
+
|
|
1222
|
+
**If 3-5 (ok/good):**
|
|
1223
|
+
```
|
|
1224
|
+
Thanks! Keep shipping.
|
|
1225
|
+
```
|
|
1226
|
+
|
|
1227
|
+
Just log the rating:
|
|
1228
|
+
```json
|
|
1229
|
+
{"date": "2024-01-18", "rating": 5}
|
|
1230
|
+
```
|
|
1231
|
+
|
|
1232
|
+
**For paid users:** Offer to share feedback with JFL team to improve the product.
|
|
1233
|
+
**For free users:** Stays local unless they opt-in.
|
|
632
1234
|
|
|
633
|
-
Don't ask every session - maybe every 3rd or after major milestones.
|
|
1235
|
+
Don't ask every session - maybe every 3rd session or after major milestones.
|
|
634
1236
|
|
|
635
1237
|
Then:
|
|
636
1238
|
1. Get right into building
|
|
@@ -642,15 +1244,45 @@ Then:
|
|
|
642
1244
|
|
|
643
1245
|
## After Planning
|
|
644
1246
|
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
1247
|
+
If you make a plan (architecture, skill design, etc.), don't just ask "want me to build it?"
|
|
1248
|
+
|
|
1249
|
+
**Stop and ask clarifying questions first:**
|
|
1250
|
+
|
|
1251
|
+
```
|
|
1252
|
+
Before I build this:
|
|
1253
|
+
|
|
1254
|
+
1. [Specific question about their use case]
|
|
1255
|
+
2. [Question about scope/priorities]
|
|
1256
|
+
3. [Question about integrations/APIs]
|
|
649
1257
|
4. Any references or examples to pull in?
|
|
1258
|
+
```
|
|
650
1259
|
|
|
651
|
-
|
|
1260
|
+
**Also check the foundational docs.** If VISION.md, ROADMAP.md, etc. are empty, offer to capture what you've learned:
|
|
652
1261
|
|
|
653
|
-
|
|
1262
|
+
```
|
|
1263
|
+
Also - your VISION.md is empty. Based on what you said,
|
|
1264
|
+
you're building [summary]. Want me to capture that so
|
|
1265
|
+
we have context for future sessions?
|
|
1266
|
+
```
|
|
1267
|
+
|
|
1268
|
+
This way the docs get populated naturally through building, not through forms.
|
|
1269
|
+
|
|
1270
|
+
**Make it easy to share context:**
|
|
1271
|
+
|
|
1272
|
+
```
|
|
1273
|
+
I'll help you work through this. Send me anything:
|
|
1274
|
+
- Pictures, screenshots
|
|
1275
|
+
- Documents, PDFs
|
|
1276
|
+
- Voice notes, transcripts
|
|
1277
|
+
- Links, references
|
|
1278
|
+
- Stream of consciousness
|
|
1279
|
+
|
|
1280
|
+
I'll process it and pull out what matters.
|
|
1281
|
+
```
|
|
1282
|
+
|
|
1283
|
+
Don't make them structure their thoughts. Meet them where they are.
|
|
1284
|
+
|
|
1285
|
+
The plan is a draft. Refine it with them before executing. They know things you don't.
|
|
654
1286
|
|
|
655
1287
|
---
|
|
656
1288
|
|
|
@@ -703,38 +1335,121 @@ Run `/hud` to show the project dashboard.
|
|
|
703
1335
|
|
|
704
1336
|
## Team Configuration
|
|
705
1337
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
1338
|
+
> Edit this section with your team. **JFL auth identity must match to get access.**
|
|
1339
|
+
|
|
1340
|
+
### Owner
|
|
1341
|
+
<!-- The person who can edit all files directly -->
|
|
1342
|
+
<!-- These identities get owner access when authenticated via jfl login -->
|
|
1343
|
+
**Name:** {owner_name}
|
|
1344
|
+
**GitHub Username:** {owner_github_username}
|
|
1345
|
+
**x402 Address:** {owner_wallet_address}
|
|
710
1346
|
|
|
711
|
-
|
|
1347
|
+
### Core Team
|
|
1348
|
+
<!-- People with deeper access - must be authenticated -->
|
|
712
1349
|
| Name | GitHub Username | x402 Address | Role |
|
|
713
1350
|
|------|-----------------|--------------|------|
|
|
714
1351
|
| | | | |
|
|
715
1352
|
|
|
716
|
-
|
|
1353
|
+
### Contributors
|
|
1354
|
+
<!-- Everyone else routes to suggestions -->
|
|
1355
|
+
Contributors are identified by their `suggestions/{name}.md` file.
|
|
1356
|
+
New authenticated users without a suggestions file get onboarded as contributors.
|
|
717
1357
|
|
|
718
1358
|
---
|
|
719
1359
|
|
|
720
1360
|
## Onboarding Flows
|
|
721
1361
|
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
1362
|
+
### New Contributor (First Time)
|
|
1363
|
+
|
|
1364
|
+
Walk them through step by step:
|
|
1365
|
+
|
|
1366
|
+
```
|
|
1367
|
+
Welcome to {project_name}!
|
|
1368
|
+
|
|
1369
|
+
Let me get you oriented.
|
|
1370
|
+
```
|
|
1371
|
+
|
|
1372
|
+
**Step 1: The Vision**
|
|
1373
|
+
Read `knowledge/VISION.md` and explain:
|
|
1374
|
+
- What you're building
|
|
1375
|
+
- Why it matters
|
|
1376
|
+
- Ask: "Does that make sense?"
|
|
1377
|
+
|
|
1378
|
+
**Step 2: The Narrative**
|
|
1379
|
+
Read `knowledge/NARRATIVE.md` and explain:
|
|
1380
|
+
- How you tell the story
|
|
1381
|
+
- Key messages
|
|
1382
|
+
- Ask: "How does that land?"
|
|
1383
|
+
|
|
1384
|
+
**Step 3: Their Profile**
|
|
1385
|
+
Ask:
|
|
1386
|
+
```
|
|
1387
|
+
Tell me about you:
|
|
1388
|
+
|
|
1389
|
+
1. What are your strengths? (Be specific)
|
|
1390
|
+
2. What role do you see yourself playing?
|
|
1391
|
+
3. How much time can you give? (hours/week)
|
|
1392
|
+
4. Anything you're NOT good at?
|
|
1393
|
+
```
|
|
1394
|
+
|
|
1395
|
+
Save to their `suggestions/{name}.md` under `## PROFILE`.
|
|
726
1396
|
|
|
727
|
-
**
|
|
1397
|
+
**Step 4: Assign Tasks**
|
|
1398
|
+
Show available tasks from `knowledge/TASKS.md` or `templates/collaboration/TASKS.md`.
|
|
728
1399
|
|
|
729
|
-
|
|
1400
|
+
---
|
|
1401
|
+
|
|
1402
|
+
### Returning Contributor (Been Gone > 7 days)
|
|
1403
|
+
|
|
1404
|
+
```
|
|
1405
|
+
Hey {name}. Welcome back!
|
|
1406
|
+
|
|
1407
|
+
Since you were last here:
|
|
1408
|
+
{list updates from knowledge/UPDATES.md or recent changes}
|
|
1409
|
+
|
|
1410
|
+
You were working on:
|
|
1411
|
+
{from their suggestions file}
|
|
1412
|
+
|
|
1413
|
+
Ready to continue?
|
|
1414
|
+
```
|
|
1415
|
+
|
|
1416
|
+
---
|
|
1417
|
+
|
|
1418
|
+
### Regular Return (< 7 days)
|
|
1419
|
+
|
|
1420
|
+
Keep it quick:
|
|
1421
|
+
```
|
|
1422
|
+
Hey {name}. {X} days to launch.
|
|
1423
|
+
|
|
1424
|
+
{Show /hud dashboard}
|
|
1425
|
+
|
|
1426
|
+
What do you want to work on?
|
|
1427
|
+
```
|
|
730
1428
|
|
|
731
1429
|
---
|
|
732
1430
|
|
|
733
1431
|
## Knowledge Sources
|
|
734
1432
|
|
|
735
|
-
|
|
1433
|
+
### Understanding the Vision
|
|
1434
|
+
|
|
1435
|
+
**Check VISION.md status first:**
|
|
1436
|
+
- If `Status: EMERGENT` → Synthesize from living docs below
|
|
1437
|
+
- If `Status: DECLARED` → Use the declared vision, stop synthesizing
|
|
736
1438
|
|
|
737
|
-
|
|
1439
|
+
Vision is blurry at the start and gets teased out through product development. But at some point, the founder nails it.
|
|
1440
|
+
|
|
1441
|
+
**When EMERGENT**, synthesize understanding from living docs:
|
|
1442
|
+
|
|
1443
|
+
| Priority | Document | What It Tells You |
|
|
1444
|
+
|----------|----------|-------------------|
|
|
1445
|
+
| 1 | Product specs, if any | What you're actually building |
|
|
1446
|
+
| 2 | GTM strategy docs | Who you're targeting and why |
|
|
1447
|
+
| 3 | `content/articles/` | How you explain it to the world |
|
|
1448
|
+
| 4 | `drafts/` | Active pitches to real people |
|
|
1449
|
+
| 5 | CRM notes (`./crm prep [name]`) | What resonates with real people |
|
|
1450
|
+
| 6 | `knowledge/VISION.md` | Pointer doc + current synthesis |
|
|
1451
|
+
|
|
1452
|
+
When someone asks "what is this?", read the living docs and synthesize. The vision crystallizes through building and selling, not through declaration.
|
|
738
1453
|
|
|
739
1454
|
### Other Strategic Docs
|
|
740
1455
|
|
|
@@ -815,26 +1530,116 @@ Claude: "Nice! Marking complete.
|
|
|
815
1530
|
|
|
816
1531
|
## Skills Available
|
|
817
1532
|
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
1533
|
+
### /hud - Project Dashboard
|
|
1534
|
+
|
|
1535
|
+
Shows timeline, phases, tasks. See `skills/hud/SKILL.md`.
|
|
1536
|
+
|
|
1537
|
+
```
|
|
1538
|
+
/hud # Full dashboard
|
|
1539
|
+
/hud --compact # One-line status
|
|
1540
|
+
```
|
|
1541
|
+
|
|
1542
|
+
### /brand-architect - Brand Creation
|
|
1543
|
+
|
|
1544
|
+
Generates marks, colors, typography. See `skills/brand-architect/SKILL.md`.
|
|
1545
|
+
|
|
1546
|
+
```
|
|
1547
|
+
/brand-architect # Full workflow
|
|
1548
|
+
/brand-architect marks # Just marks
|
|
1549
|
+
/brand-architect colors # Just colors
|
|
1550
|
+
```
|
|
1551
|
+
|
|
1552
|
+
### /web-architect - Asset Implementation
|
|
1553
|
+
|
|
1554
|
+
Generates final assets. See `skills/web-architect/SKILL.md`.
|
|
1555
|
+
|
|
1556
|
+
```
|
|
1557
|
+
/web-architect audit # Check completeness
|
|
1558
|
+
/web-architect implement all # Generate everything
|
|
1559
|
+
```
|
|
1560
|
+
|
|
1561
|
+
### /content - Content Creation
|
|
1562
|
+
|
|
1563
|
+
Generates threads, articles, one-pagers. See `skills/content-creator/SKILL.md`.
|
|
1564
|
+
|
|
1565
|
+
```
|
|
1566
|
+
/content thread [topic] # Twitter thread
|
|
1567
|
+
/content post [topic] # Single post
|
|
1568
|
+
/content article [topic] # Long-form
|
|
1569
|
+
/content one-pager [topic] # Print-ready summary
|
|
1570
|
+
```
|
|
1571
|
+
|
|
1572
|
+
### /video - Founder Video Content
|
|
1573
|
+
|
|
1574
|
+
Generates viral short-form video scripts. Based on Jun Yuh's frameworks. See `skills/founder-video/SKILL.md`.
|
|
1575
|
+
|
|
1576
|
+
```
|
|
1577
|
+
/video idea [topic] # Generate concept with hook options
|
|
1578
|
+
/video script [topic] # Full script with shot list
|
|
1579
|
+
/video hook [topic] # 5 hook variations
|
|
1580
|
+
/video story [experience] # Extract video from your story
|
|
1581
|
+
/video batch [theme] # Weekly content batch (7-day plan)
|
|
1582
|
+
/video repurpose [source] # Rule of 7 repurposing
|
|
1583
|
+
/video diagnose [problem] # Fix underperforming videos
|
|
1584
|
+
```
|
|
826
1585
|
|
|
827
|
-
|
|
1586
|
+
### /startup - The Startup Journey
|
|
1587
|
+
|
|
1588
|
+
Startup stages from idea to scale, informed by Paul Graham + Garry Tan. See `skills/startup/SKILL.md`.
|
|
1589
|
+
|
|
1590
|
+
```
|
|
1591
|
+
/startup # Where am I? What's next?
|
|
1592
|
+
/startup stage # Assess current stage from docs
|
|
1593
|
+
/startup next # The one thing to do this week
|
|
1594
|
+
/startup validate [idea] # PG-style idea critique
|
|
1595
|
+
/startup mvp [idea] # Scope to 2-week MVP
|
|
1596
|
+
/startup customers # How to find your first 10
|
|
1597
|
+
/startup launch # Launch playbook
|
|
1598
|
+
/startup fundraise [stage] # Fundraising by stage
|
|
1599
|
+
/startup pg [topic] # What would PG say?
|
|
1600
|
+
/startup garry [topic] # What would Garry say?
|
|
1601
|
+
```
|
|
828
1602
|
|
|
829
1603
|
---
|
|
830
1604
|
|
|
831
1605
|
## The Workflow Phases
|
|
832
1606
|
|
|
833
|
-
1
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
1607
|
+
### Phase 1: Foundation
|
|
1608
|
+
|
|
1609
|
+
Set up strategic docs:
|
|
1610
|
+
1. Copy templates from `templates/strategic/` to `knowledge/`
|
|
1611
|
+
2. Fill in VISION, NARRATIVE, THESIS, ROADMAP
|
|
1612
|
+
3. This informs everything else
|
|
1613
|
+
|
|
1614
|
+
### Phase 2: Collaboration Setup
|
|
1615
|
+
|
|
1616
|
+
Configure team:
|
|
1617
|
+
1. Edit Team section above with owner/team info
|
|
1618
|
+
2. Create `suggestions/{name}.md` for each contributor
|
|
1619
|
+
3. Set up CRM via `./crm` CLI (syncs to Google Sheets)
|
|
1620
|
+
|
|
1621
|
+
### Phase 3: Brand
|
|
1622
|
+
|
|
1623
|
+
Create visual identity:
|
|
1624
|
+
1. Fill out `knowledge/BRAND_BRIEF.md`
|
|
1625
|
+
2. Run `/brand-architect`
|
|
1626
|
+
3. Preview options in `previews/brand/`
|
|
1627
|
+
4. Record decisions in `knowledge/BRAND_DECISIONS.md`
|
|
1628
|
+
5. Run `/web-architect implement all`
|
|
1629
|
+
|
|
1630
|
+
### Phase 4: Content
|
|
1631
|
+
|
|
1632
|
+
Generate launch content:
|
|
1633
|
+
1. Use `/content` to create threads, posts, articles
|
|
1634
|
+
2. Preview in `previews/content/`
|
|
1635
|
+
3. Create one-pagers with PDF export
|
|
1636
|
+
|
|
1637
|
+
### Phase 5: Launch
|
|
1638
|
+
|
|
1639
|
+
Coordinate the launch:
|
|
1640
|
+
1. Track with `/hud`
|
|
1641
|
+
2. Execute tasks from `knowledge/TASKS.md`
|
|
1642
|
+
3. Ship it
|
|
838
1643
|
|
|
839
1644
|
---
|
|
840
1645
|
|
|
@@ -957,4 +1762,104 @@ What's your name? I'll get you set up.
|
|
|
957
1762
|
4. **Context compounds** - Each session builds on the last
|
|
958
1763
|
5. **Ship it** - The goal is launch, not endless iteration
|
|
959
1764
|
|
|
960
|
-
---
|
|
1765
|
+
---
|
|
1766
|
+
|
|
1767
|
+
## INTERNAL: Template Distribution (JFL Team Only)
|
|
1768
|
+
|
|
1769
|
+
**When you make changes that should reach ALL jfl users globally, update the template repo.**
|
|
1770
|
+
|
|
1771
|
+
### Architecture
|
|
1772
|
+
|
|
1773
|
+
```
|
|
1774
|
+
jfl-template (402goose/jfl-template) ← SOURCE OF TRUTH
|
|
1775
|
+
↑
|
|
1776
|
+
│ jfl init / jfl update pulls from here
|
|
1777
|
+
│
|
|
1778
|
+
┌───┴────────────────────────────────────┐
|
|
1779
|
+
│ User's project │
|
|
1780
|
+
│ ├── CLAUDE.md │
|
|
1781
|
+
│ ├── .claude/settings.json │
|
|
1782
|
+
│ ├── scripts/session/*.sh │
|
|
1783
|
+
│ ├── knowledge/ │
|
|
1784
|
+
│ └── ... │
|
|
1785
|
+
└────────────────────────────────────────┘
|
|
1786
|
+
```
|
|
1787
|
+
|
|
1788
|
+
### When to Update jfl-template
|
|
1789
|
+
|
|
1790
|
+
Update the template repo when changing:
|
|
1791
|
+
- `CLAUDE.md` - instructions for Claude
|
|
1792
|
+
- `.claude/settings.json` - hooks (SessionStart, Stop, etc.)
|
|
1793
|
+
- `scripts/session/*.sh` - session management scripts
|
|
1794
|
+
- `knowledge/*.md` - default knowledge templates
|
|
1795
|
+
- `templates/` - doc templates
|
|
1796
|
+
- `.claude/skills/` - bundled skills
|
|
1797
|
+
- `crm` - CRM CLI wrapper
|
|
1798
|
+
|
|
1799
|
+
### How to Update
|
|
1800
|
+
|
|
1801
|
+
**From JFL-GTM repo:**
|
|
1802
|
+
|
|
1803
|
+
```bash
|
|
1804
|
+
# 1. Make changes in product/template/
|
|
1805
|
+
# (This is the dev copy, test here first)
|
|
1806
|
+
|
|
1807
|
+
# 2. Test the changes locally
|
|
1808
|
+
|
|
1809
|
+
# 3. Copy to jfl-template repo
|
|
1810
|
+
cd /tmp
|
|
1811
|
+
rm -rf jfl-template
|
|
1812
|
+
git clone git@github.com:402goose/jfl-template.git
|
|
1813
|
+
cd jfl-template
|
|
1814
|
+
|
|
1815
|
+
# 4. Copy updated files
|
|
1816
|
+
cp -r /path/to/JFL-GTM/product/template/* .
|
|
1817
|
+
cp -r /path/to/JFL-GTM/product/template/.[!.]* . 2>/dev/null || true
|
|
1818
|
+
|
|
1819
|
+
# 5. Commit and push
|
|
1820
|
+
git add -A
|
|
1821
|
+
git commit -m "feat: description of what changed"
|
|
1822
|
+
git push origin main
|
|
1823
|
+
```
|
|
1824
|
+
|
|
1825
|
+
**Or use this one-liner:**
|
|
1826
|
+
|
|
1827
|
+
```bash
|
|
1828
|
+
# From JFL-GTM root:
|
|
1829
|
+
./scripts/sync-template.sh "commit message here"
|
|
1830
|
+
```
|
|
1831
|
+
|
|
1832
|
+
### What Happens on User Side
|
|
1833
|
+
|
|
1834
|
+
- **New users (`jfl init`)**: Get the latest template immediately
|
|
1835
|
+
- **Existing users (`jfl update`)**: Syncs these paths from template:
|
|
1836
|
+
- `CLAUDE.md`
|
|
1837
|
+
- `.claude/`
|
|
1838
|
+
- `.mcp.json`
|
|
1839
|
+
- `context-hub`
|
|
1840
|
+
- `templates/`
|
|
1841
|
+
- `scripts/`
|
|
1842
|
+
|
|
1843
|
+
### Files NOT Synced on Update (preserved)
|
|
1844
|
+
|
|
1845
|
+
These are project-specific and never overwritten:
|
|
1846
|
+
- `knowledge/` (their filled-in docs)
|
|
1847
|
+
- `product/` (their product code)
|
|
1848
|
+
- `suggestions/`
|
|
1849
|
+
- `content/`
|
|
1850
|
+
- `previews/`
|
|
1851
|
+
- `.jfl/config.json`
|
|
1852
|
+
|
|
1853
|
+
### Testing Template Changes
|
|
1854
|
+
|
|
1855
|
+
1. Make changes in `product/template/`
|
|
1856
|
+
2. Run `jfl init test-project` in /tmp to verify init works
|
|
1857
|
+
3. Create a project, run `jfl update` to verify update works
|
|
1858
|
+
4. If both work, sync to jfl-template repo
|
|
1859
|
+
|
|
1860
|
+
### Remember
|
|
1861
|
+
|
|
1862
|
+
- **jfl-template is lightweight** (~500KB) - only template files
|
|
1863
|
+
- **jfl-platform has code** (~50MB) - packages, scripts, etc.
|
|
1864
|
+
- Users should NEVER clone jfl-platform just for templates
|
|
1865
|
+
- Keep jfl-template in sync with product/template/
|