jfl 0.0.0 → 0.1.1
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 +374 -146
- 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/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 +475 -0
- package/dist/commands/onboard.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/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.d.ts +13 -0
- package/dist/commands/services.d.ts.map +1 -0
- package/dist/commands/services.js +417 -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 +4 -2
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +207 -22
- package/dist/commands/update.js.map +1 -1
- 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 +248 -89
- 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 +238 -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/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 +408 -0
- package/dist/lib/service-detector.js.map +1 -0
- package/dist/lib/service-mcp-base.d.ts +94 -0
- package/dist/lib/service-mcp-base.d.ts.map +1 -0
- package/dist/lib/service-mcp-base.js +244 -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-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 +70 -0
- package/dist/utils/settings-validator.d.ts.map +1 -0
- package/dist/utils/settings-validator.js +198 -0
- package/dist/utils/settings-validator.js.map +1 -0
- package/package.json +18 -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/settings.json +4 -1
- package/template/.mcp.json +7 -1
- package/template/CLAUDE.md +138 -27
- package/template/scripts/session/auto-commit.sh +55 -4
- package/template/scripts/session/jfl-doctor.sh +192 -211
- package/template/scripts/session/session-cleanup.sh +180 -0
- package/template/scripts/session/session-end.sh +15 -24
- package/template/scripts/session/session-init.sh +79 -74
- package/template/scripts/session/auto-merge.sh +0 -325
package/README.md
CHANGED
|
@@ -1,17 +1,74 @@
|
|
|
1
1
|
# JFL - Just Fucking Launch
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**The context layer for AI-native teams.**
|
|
4
4
|
|
|
5
|
-
JFL
|
|
5
|
+
JFL provides persistent context for AI workflows. Agents can read what happened in previous sessions, understand decisions that were made, and access project knowledge—eliminating the cold-start problem where each AI interaction begins from zero.
|
|
6
|
+
|
|
7
|
+
Context lives in git as structured files (markdown, JSONL). Any AI tool can integrate via MCP.
|
|
8
|
+
|
|
9
|
+
**Quick Links:** [GitHub](https://github.com/402goose/jfl-cli) · [npm](https://www.npmjs.com/package/jfl)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## What Problem Does This Solve?
|
|
14
|
+
|
|
15
|
+
AI agents are stateless by default. Each new session starts from scratch:
|
|
16
|
+
- Previous decisions aren't remembered
|
|
17
|
+
- Work from other sessions isn't visible
|
|
18
|
+
- Context has to be re-explained every time
|
|
19
|
+
|
|
20
|
+
For multi-session projects or team collaboration with AI, this creates coordination overhead. JFL provides a shared context layer that accumulates over time and is accessible to any AI tool.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Where JFL Fits
|
|
25
|
+
|
|
26
|
+
JFL is a coordination and context layer for AI workflows.
|
|
27
|
+
|
|
28
|
+
**What it provides:**
|
|
29
|
+
- Persistent memory across sessions (journal entries, decisions, code context)
|
|
30
|
+
- Shared context that any AI can read and contribute to
|
|
31
|
+
- Git-native storage (markdown, JSONL) that survives model changes
|
|
32
|
+
|
|
33
|
+
**What it works with:**
|
|
34
|
+
- AI coding tools (Claude Code, Cursor)
|
|
35
|
+
- Agent frameworks (CrewAI, AutoGPT)
|
|
36
|
+
- Custom AI workflows
|
|
37
|
+
|
|
38
|
+
**Architecture:**
|
|
39
|
+
JFL runs as a local daemon (Context Hub on port 4242) and integrates via MCP. Your project's context lives in `.jfl/` as structured files. Any AI tool with MCP support can read and update this context.
|
|
40
|
+
|
|
41
|
+
**Use cases:**
|
|
42
|
+
- Solo developers building with AI (never lose context between sessions)
|
|
43
|
+
- Teams coordinating work with AI agents (shared memory across people and agents)
|
|
44
|
+
- Multi-session projects (context accumulates, agents get smarter over time)
|
|
45
|
+
|
|
46
|
+
---
|
|
6
47
|
|
|
7
48
|
## What JFL Does
|
|
8
49
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
50
|
+
JFL provides three core systems:
|
|
51
|
+
|
|
52
|
+
**Context Hub** — A local daemon (port 4242) that aggregates journal entries, knowledge docs, and code headers. Any AI can query it via MCP to understand what happened across sessions, what decisions were made, and what code does.
|
|
53
|
+
|
|
54
|
+
**Synopsis** — Generates work summaries by rolling up journal entries, git commits, and file headers. Answers questions like "what happened this week?" or "what did Alex work on?" with structured reports and time breakdowns.
|
|
55
|
+
|
|
56
|
+
**Session Management** — Automatic session isolation for parallel work. Single sessions work directly on your branch for simplicity. Multiple concurrent sessions use isolated worktrees to prevent conflicts. Auto-commit saves work every 2 minutes, and sessions auto-merge when finished.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## How Teams Use It
|
|
61
|
+
|
|
62
|
+
**Solo developers:**
|
|
63
|
+
Build with AI tools across multiple sessions without re-explaining context. Your project knowledge accumulates—agents get smarter over time, not dumber.
|
|
64
|
+
|
|
65
|
+
**Teams with AI agents:**
|
|
66
|
+
Multiple people and AI agents can work in parallel. Everyone reads from and writes to the same context layer. No meetings to sync up, no handoff docs that get stale.
|
|
67
|
+
|
|
68
|
+
**Works with your existing tools:**
|
|
69
|
+
JFL integrates with Claude Code, Cursor, Clawdbot, CrewAI, and any tool that supports MCP. Switch models or tools tomorrow—your context survives because it's git-native.
|
|
70
|
+
|
|
71
|
+
---
|
|
15
72
|
|
|
16
73
|
## Installation
|
|
17
74
|
|
|
@@ -19,166 +76,257 @@ JFL is a CLI toolkit that powers go-to-market campaigns from zero to launch. It
|
|
|
19
76
|
npm install -g jfl
|
|
20
77
|
```
|
|
21
78
|
|
|
22
|
-
|
|
23
|
-
- **httpcat-cli** - For gasless USDC transfers via x402 (bundled, no separate install needed)
|
|
24
|
-
- **@x402/evm** - x402 payment protocol for Day Pass payments
|
|
79
|
+
**Requirements:** Node ≥18
|
|
25
80
|
|
|
26
|
-
|
|
81
|
+
JFL automatically installs dependencies including Context Hub MCP and x402 payment tools.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Quick Start (TL;DR)
|
|
27
86
|
|
|
28
87
|
```bash
|
|
29
|
-
#
|
|
30
|
-
jfl init my-
|
|
88
|
+
# Initialize a GTM workspace
|
|
89
|
+
jfl init my-product-gtm
|
|
31
90
|
|
|
32
91
|
# Check status
|
|
33
|
-
cd my-
|
|
92
|
+
cd my-product-gtm
|
|
34
93
|
jfl status
|
|
35
94
|
|
|
36
|
-
# View
|
|
95
|
+
# View campaign dashboard
|
|
37
96
|
jfl hud
|
|
38
97
|
|
|
39
|
-
#
|
|
98
|
+
# See what happened recently
|
|
99
|
+
jfl synopsis 24
|
|
100
|
+
|
|
101
|
+
# Start interactive session (auto-updates on first run)
|
|
40
102
|
jfl
|
|
41
103
|
```
|
|
42
104
|
|
|
43
|
-
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Core Commands
|
|
108
|
+
|
|
109
|
+
| Command | Description |
|
|
110
|
+
|---------|-------------|
|
|
111
|
+
| `jfl` | Interactive session (auto-updates GTM template + npm package) |
|
|
112
|
+
| `jfl init [name]` | Initialize new GTM workspace |
|
|
113
|
+
| `jfl status` | Show project status and auth |
|
|
114
|
+
| `jfl hud` | Campaign dashboard (ship date, phases, pipeline) |
|
|
115
|
+
| `jfl synopsis [hours] [author]` | Work summary (journal + commits + code) |
|
|
116
|
+
| `jfl update` | Pull latest skills and templates |
|
|
117
|
+
| `jfl context-hub [action]` | Manage Context Hub daemon (start/stop/status) |
|
|
118
|
+
| `jfl session [action]` | Session management (create/list/end) |
|
|
119
|
+
| `jfl repair` | Fix .jfl/config.json if corrupted |
|
|
120
|
+
|
|
121
|
+
### Platform Commands
|
|
122
|
+
|
|
123
|
+
| Command | Description |
|
|
124
|
+
|---------|-------------|
|
|
125
|
+
| `jfl login` | Authenticate to JFL platform |
|
|
126
|
+
| `jfl login --x402` | Use x402 Day Pass ($5/day crypto) |
|
|
127
|
+
| `jfl wallet` | Show wallet and day pass status |
|
|
128
|
+
| `jfl deploy` | Deploy to JFL platform |
|
|
129
|
+
| `jfl agents [action]` | Manage parallel agents (list/create/start/stop) |
|
|
130
|
+
| `jfl feedback` | Rate your session |
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## How It Works
|
|
135
|
+
|
|
136
|
+
**The system lives in git. Everything is files.**
|
|
44
137
|
|
|
45
|
-
|
|
138
|
+
No proprietary database. No lock-in. Your company's knowledge graph is version-controlled and portable.
|
|
46
139
|
|
|
47
140
|
```
|
|
48
141
|
my-project-gtm/ ← GTM workspace (strategy, content, brand)
|
|
142
|
+
├── .jfl/
|
|
143
|
+
│ ├── config.json ← Project settings
|
|
144
|
+
│ ├── journal/ ← Session journals (JSONL)
|
|
145
|
+
│ └── context-hub.pid ← Context Hub daemon
|
|
49
146
|
├── product/ ← SUBMODULE → your-product-repo
|
|
50
|
-
├── knowledge/ ← Strategy,
|
|
51
|
-
├── content/ ←
|
|
52
|
-
├── suggestions/ ← Contributor
|
|
53
|
-
├── skills/
|
|
147
|
+
├── knowledge/ ← Strategy docs (VISION, ROADMAP, etc.)
|
|
148
|
+
├── content/ ← Generated marketing content
|
|
149
|
+
├── suggestions/ ← Contributor workspaces
|
|
150
|
+
├── .claude/skills/ ← JFL skills
|
|
54
151
|
└── CLAUDE.md ← AI instructions
|
|
55
152
|
|
|
56
|
-
your-product-repo/ ← SEPARATE REPO (all code
|
|
153
|
+
your-product-repo/ ← SEPARATE REPO (all code)
|
|
57
154
|
├── src/
|
|
58
155
|
├── cli/
|
|
59
156
|
└── ...
|
|
60
157
|
```
|
|
61
158
|
|
|
62
|
-
**
|
|
159
|
+
**When you start a session:**
|
|
160
|
+
1. The agent loads your full context (via Context Hub)
|
|
161
|
+
2. You work (code, content, strategy, whatever)
|
|
162
|
+
3. Decisions and learnings are captured automatically
|
|
163
|
+
4. Session ends, context persists
|
|
164
|
+
5. Next session picks up exactly where you left off
|
|
165
|
+
|
|
166
|
+
**Why git-native?**
|
|
167
|
+
|
|
168
|
+
All context is stored as markdown and JSONL in your git repository. This means:
|
|
169
|
+
- Version controlled (see how context evolved)
|
|
170
|
+
- Portable (no vendor lock-in)
|
|
171
|
+
- Model-agnostic (switch AI tools without losing context)
|
|
172
|
+
- Collaborative (merge and branch like code)
|
|
173
|
+
|
|
174
|
+
**It compounds.** The more you use it, the more it knows. Six months in, the agent understands your business better than most employees would.
|
|
175
|
+
|
|
176
|
+
**Why GTM workspace is separate from product code:**
|
|
63
177
|
- Clean separation of concerns
|
|
64
|
-
- Product
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
178
|
+
- Product code doesn't get polluted with GTM docs
|
|
179
|
+
- Multiple GTMs can reference the same product
|
|
180
|
+
- `jfl update` updates GTM toolkit without touching product code
|
|
181
|
+
- Team can work on product independently
|
|
182
|
+
|
|
183
|
+
---
|
|
68
184
|
|
|
69
|
-
##
|
|
185
|
+
## Context Hub
|
|
70
186
|
|
|
71
|
-
|
|
187
|
+
Context Hub is a local daemon (port 4242) that provides unified context to any AI:
|
|
72
188
|
|
|
73
189
|
```bash
|
|
74
|
-
|
|
75
|
-
jfl
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
jfl
|
|
79
|
-
|
|
80
|
-
|
|
190
|
+
# Start Context Hub
|
|
191
|
+
jfl context-hub start
|
|
192
|
+
|
|
193
|
+
# Check status
|
|
194
|
+
jfl context-hub status
|
|
195
|
+
|
|
196
|
+
# Stop daemon
|
|
197
|
+
jfl context-hub stop
|
|
81
198
|
```
|
|
82
199
|
|
|
83
|
-
|
|
200
|
+
**What it aggregates:**
|
|
201
|
+
- **Journal entries** — What happened across sessions (`.jfl/journal/*.jsonl`)
|
|
202
|
+
- **Knowledge docs** — Strategy, vision, roadmap (`knowledge/*.md`)
|
|
203
|
+
- **Code headers** — `@purpose`, `@spec`, `@decision` tags from files
|
|
204
|
+
|
|
205
|
+
**MCP Integration:**
|
|
206
|
+
Context Hub exposes MCP tools that Claude Code and other AIs can use:
|
|
207
|
+
- `context_get` — Get unified context (journal + knowledge + code)
|
|
208
|
+
- `context_search` — Semantic search across all sources
|
|
209
|
+
- `context_status` — Check daemon status
|
|
210
|
+
- `context_sessions` — See activity from other sessions
|
|
211
|
+
|
|
212
|
+
Add to your `.mcp.json`:
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"jfl-context": {
|
|
216
|
+
"command": "jfl-context-hub-mcp"
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Synopsis - Work Summaries
|
|
224
|
+
|
|
225
|
+
Synopsis aggregates journal entries, git commits, and code file headers to answer "what happened?"
|
|
84
226
|
|
|
85
227
|
```bash
|
|
86
|
-
|
|
87
|
-
jfl
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
jfl
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
jfl
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
jfl
|
|
228
|
+
# Last 24 hours, all authors
|
|
229
|
+
jfl synopsis 24
|
|
230
|
+
|
|
231
|
+
# Last 8 hours
|
|
232
|
+
jfl synopsis 8
|
|
233
|
+
|
|
234
|
+
# What did Alex work on in last 48 hours?
|
|
235
|
+
jfl synopsis 48 alex
|
|
236
|
+
|
|
237
|
+
# Filter by git author name
|
|
238
|
+
jfl synopsis 24 --author "Andrew"
|
|
97
239
|
```
|
|
98
240
|
|
|
99
|
-
|
|
241
|
+
**Output includes:**
|
|
242
|
+
- Summary of features, fixes, decisions
|
|
243
|
+
- Time audit breakdown (infra vs features vs docs)
|
|
244
|
+
- Per-team-member contributions
|
|
245
|
+
- Health checks (too much infra? not enough outreach?)
|
|
246
|
+
- Next steps from journal entries
|
|
247
|
+
- Incomplete/stubbed items
|
|
248
|
+
|
|
249
|
+
---
|
|
100
250
|
|
|
101
|
-
|
|
251
|
+
## Session Management
|
|
252
|
+
|
|
253
|
+
Work in isolated git worktrees with automatic commit/merge:
|
|
102
254
|
|
|
103
255
|
```bash
|
|
104
|
-
|
|
105
|
-
jfl
|
|
256
|
+
# Create new session (creates worktree + branch)
|
|
257
|
+
jfl session create
|
|
258
|
+
|
|
259
|
+
# List active sessions
|
|
260
|
+
jfl session list
|
|
261
|
+
|
|
262
|
+
# End session (merges to main, removes worktree)
|
|
263
|
+
jfl session end [session-name]
|
|
264
|
+
|
|
265
|
+
# Auto-commit running in background (every 2 min)
|
|
266
|
+
./scripts/session/auto-commit.sh start
|
|
106
267
|
```
|
|
107
268
|
|
|
108
|
-
|
|
269
|
+
**Each session:**
|
|
270
|
+
- Isolated git worktree (parallel work without conflicts)
|
|
271
|
+
- Auto-commits knowledge/, content/, suggestions/ every 2 minutes
|
|
272
|
+
- Auto-merges to main on session end
|
|
273
|
+
- Removes worktree and branch when merged
|
|
274
|
+
- Writes journal entries (enforced by hooks)
|
|
109
275
|
|
|
110
|
-
|
|
276
|
+
**SessionStart hook:**
|
|
277
|
+
- CD to worktree
|
|
278
|
+
- Sync repos (jfl-gtm + product submodule)
|
|
279
|
+
- Run doctor check (detect issues)
|
|
280
|
+
- Start Context Hub
|
|
281
|
+
- Show HUD dashboard
|
|
111
282
|
|
|
112
|
-
**
|
|
283
|
+
**Stop hook:**
|
|
284
|
+
- Auto-commit uncommitted changes
|
|
285
|
+
- Merge to main (with conflict handling)
|
|
286
|
+
- Cleanup worktree and branch
|
|
287
|
+
- Validate journal entry exists
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Authentication
|
|
292
|
+
|
|
293
|
+
**GitHub OAuth:**
|
|
113
294
|
```bash
|
|
114
295
|
jfl login
|
|
115
296
|
```
|
|
116
297
|
|
|
117
|
-
**x402 Crypto Wallet
|
|
298
|
+
**x402 Crypto Wallet ($5/day micropayments):**
|
|
118
299
|
```bash
|
|
119
300
|
jfl login --x402
|
|
120
301
|
```
|
|
121
302
|
|
|
122
|
-
|
|
123
|
-
- Gasless USDC transfers (no ETH needed
|
|
124
|
-
- $5/day
|
|
125
|
-
- httpcat-cli
|
|
303
|
+
Enables:
|
|
304
|
+
- Gasless USDC transfers (no ETH needed)
|
|
305
|
+
- $5/day Day Pass payments
|
|
306
|
+
- httpcat-cli bundled and configured
|
|
126
307
|
|
|
127
|
-
View
|
|
308
|
+
View auth status:
|
|
128
309
|
```bash
|
|
310
|
+
jfl status
|
|
129
311
|
jfl wallet
|
|
130
312
|
```
|
|
131
313
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
**Trial - $0**
|
|
135
|
-
- Full JFL toolkit
|
|
136
|
-
- Foundation + brand setup
|
|
137
|
-
- Use Claude Code or Codex CLI - download Claude Pro or Max at claude.ai
|
|
138
|
-
- Ends when you add teammates (context is more fun when you shape it together)
|
|
139
|
-
|
|
140
|
-
**Day Pass - $5/day per person**
|
|
141
|
-
- Only pay the days you use it
|
|
142
|
-
- AI included (no API key needed)
|
|
143
|
-
- Chat in Telegram, Slack, Discord
|
|
144
|
-
- Dashboard + Deploy at [TBD]
|
|
145
|
-
- Pay with USDC (gasless via x402)
|
|
146
|
-
|
|
147
|
-
**Solo - $49/mo**
|
|
148
|
-
- Just you (1 seat)
|
|
149
|
-
- AI included
|
|
150
|
-
- Everything in Day Pass
|
|
151
|
-
- Best if you use it most days
|
|
152
|
-
|
|
153
|
-
**Team - $199/mo**
|
|
154
|
-
- Up to 5 seats (+$25/seat after)
|
|
155
|
-
- AI included for everyone
|
|
156
|
-
- Team dashboard + analytics
|
|
157
|
-
- Parallel agents
|
|
158
|
-
- Priority support
|
|
159
|
-
|
|
160
|
-
## Project Setup Types
|
|
314
|
+
---
|
|
161
315
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
**Building a product**
|
|
165
|
-
- You're writing code
|
|
166
|
-
- Product repo linked as submodule at `product/`
|
|
167
|
-
- Code changes go to product repo
|
|
316
|
+
## Pricing
|
|
168
317
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
318
|
+
| Plan | Price | What You Get |
|
|
319
|
+
|------|-------|--------------|
|
|
320
|
+
| **Trial** | $0 | Full toolkit, foundation + brand setup. Use with Claude Code. |
|
|
321
|
+
| **Day Pass** | $5/day | Pay only days you use. AI included. Chat in Telegram/Slack/Discord. Pay with USDC (gasless). |
|
|
322
|
+
| **Solo** | $49/mo | Just you. AI included. Best if you use it most days. |
|
|
323
|
+
| **Team** | $199/mo | Up to 5 seats (+$25/seat after). AI for everyone. Parallel agents. Team analytics. |
|
|
173
324
|
|
|
174
|
-
|
|
175
|
-
- Working on specific tasks
|
|
176
|
-
- Changes go to `suggestions/{name}.md`
|
|
177
|
-
- Owner reviews and merges
|
|
325
|
+
---
|
|
178
326
|
|
|
179
|
-
## Skills
|
|
327
|
+
## Skills Library
|
|
180
328
|
|
|
181
|
-
JFL includes
|
|
329
|
+
JFL includes skills for Claude Code:
|
|
182
330
|
|
|
183
331
|
| Skill | Description |
|
|
184
332
|
|-------|-------------|
|
|
@@ -186,16 +334,18 @@ JFL includes powerful skills for Claude Code:
|
|
|
186
334
|
| `/brand-architect` | Generate brand identity (marks, colors, typography) |
|
|
187
335
|
| `/web-architect` | Implement assets (SVG, favicon, OG images) |
|
|
188
336
|
| `/content` | Create content (threads, posts, articles, one-pagers) |
|
|
189
|
-
| `/x-algorithm` | Optimize tweets for X For You feed
|
|
337
|
+
| `/x-algorithm` | Optimize tweets for X For You feed |
|
|
190
338
|
| `/video` | Founder video scripts (viral short-form) |
|
|
191
339
|
| `/startup` | Startup journey guidance (idea to scale) |
|
|
192
|
-
| `/agent-browser` | Headless browser automation
|
|
193
|
-
| `/search` | Semantic search across GTM knowledge base
|
|
340
|
+
| `/agent-browser` | Headless browser automation |
|
|
341
|
+
| `/search` | Semantic search across GTM knowledge base |
|
|
194
342
|
| `/spec` | Multi-agent adversarial spec refinement |
|
|
195
343
|
| `/react-best-practices` | React/Next.js performance optimization |
|
|
196
344
|
| `/remotion-best-practices` | Remotion video creation in React |
|
|
197
345
|
|
|
198
|
-
Run
|
|
346
|
+
Run in Claude Code after `jfl init`.
|
|
347
|
+
|
|
348
|
+
---
|
|
199
349
|
|
|
200
350
|
## Knowledge Layer
|
|
201
351
|
|
|
@@ -210,52 +360,104 @@ knowledge/
|
|
|
210
360
|
├── BRAND_BRIEF.md # Brand inputs
|
|
211
361
|
├── BRAND_DECISIONS.md # Finalized brand choices
|
|
212
362
|
├── VOICE_AND_TONE.md # How the brand speaks
|
|
213
|
-
|
|
214
|
-
└── CRM.md # Contact database
|
|
363
|
+
└── TASKS.md # Master task list
|
|
215
364
|
```
|
|
216
365
|
|
|
217
|
-
These docs are the source of truth
|
|
366
|
+
These docs are the source of truth. AIs read them to generate content, make decisions, and maintain consistency.
|
|
218
367
|
|
|
219
|
-
|
|
368
|
+
---
|
|
220
369
|
|
|
221
|
-
|
|
370
|
+
## Auto-Update
|
|
222
371
|
|
|
372
|
+
JFL automatically checks for updates on session start (24-hour cache):
|
|
373
|
+
|
|
374
|
+
- **Minor/patch versions** — Auto-updates silently
|
|
375
|
+
- **Major versions** — Prompts for approval
|
|
376
|
+
|
|
377
|
+
**Skip auto-update:**
|
|
378
|
+
```bash
|
|
379
|
+
jfl --no-update
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
**Manual update:**
|
|
223
383
|
```bash
|
|
224
384
|
jfl update # Pull latest skills and CLAUDE.md
|
|
225
385
|
jfl update --dry # Preview changes first
|
|
226
386
|
```
|
|
227
387
|
|
|
228
|
-
|
|
229
|
-
-
|
|
230
|
-
- `CLAUDE.md`
|
|
231
|
-
-
|
|
388
|
+
**What gets updated:**
|
|
389
|
+
- `.claude/skills/` — Latest skill implementations
|
|
390
|
+
- `CLAUDE.md` — Latest AI instructions
|
|
391
|
+
- `scripts/` — Session management scripts
|
|
392
|
+
- `templates/` — Doc templates
|
|
393
|
+
|
|
394
|
+
**What's preserved:**
|
|
395
|
+
- `knowledge/` — Your strategy docs
|
|
396
|
+
- `content/` — Your generated content
|
|
397
|
+
- `product/` — Your product code
|
|
398
|
+
- `.jfl/config.json` — Project settings
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## Journal Protocol
|
|
403
|
+
|
|
404
|
+
Every session MUST write journal entries. The Stop hook blocks if no entry exists.
|
|
405
|
+
|
|
406
|
+
**Entry format:**
|
|
407
|
+
```json
|
|
408
|
+
{
|
|
409
|
+
"v": 1,
|
|
410
|
+
"ts": "2026-01-28T10:00:00.000Z",
|
|
411
|
+
"session": "session-goose-20260128-1014-00cec4",
|
|
412
|
+
"type": "feature|fix|decision|milestone|discovery",
|
|
413
|
+
"status": "complete|incomplete|blocked",
|
|
414
|
+
"title": "Short title",
|
|
415
|
+
"summary": "2-3 sentence summary",
|
|
416
|
+
"detail": "Full description with context",
|
|
417
|
+
"files": ["file1.ts", "file2.ts"],
|
|
418
|
+
"incomplete": ["what's not done"],
|
|
419
|
+
"next": "what should happen next"
|
|
420
|
+
}
|
|
421
|
+
```
|
|
232
422
|
|
|
233
|
-
|
|
423
|
+
**Write entries when:**
|
|
424
|
+
- Feature completed
|
|
425
|
+
- Decision made
|
|
426
|
+
- Bug fixed
|
|
427
|
+
- Milestone reached
|
|
428
|
+
- Session ending
|
|
234
429
|
|
|
235
|
-
|
|
430
|
+
Journal entries become searchable via Context Hub and Synopsis.
|
|
236
431
|
|
|
237
|
-
|
|
432
|
+
---
|
|
238
433
|
|
|
239
|
-
|
|
434
|
+
## File Headers (Required for Code)
|
|
240
435
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
436
|
+
Every `.ts`, `.tsx`, `.js`, `.jsx` file MUST have a header with `@purpose`:
|
|
437
|
+
|
|
438
|
+
```typescript
|
|
439
|
+
/**
|
|
440
|
+
* Component/Module Name
|
|
441
|
+
*
|
|
442
|
+
* Brief description of what this does.
|
|
443
|
+
*
|
|
444
|
+
* @purpose One-line description of file's purpose
|
|
445
|
+
* @spec Optional: link to spec (e.g., PLATFORM_SPEC.md#sessions)
|
|
446
|
+
* @decision Optional: decision slug (e.g., journal/2026-01.md#per-session)
|
|
447
|
+
*/
|
|
245
448
|
```
|
|
246
449
|
|
|
247
|
-
|
|
248
|
-
-
|
|
249
|
-
-
|
|
250
|
-
-
|
|
251
|
-
- Own branch for changes
|
|
450
|
+
Enables:
|
|
451
|
+
- Synopsis to extract context from files
|
|
452
|
+
- Codebase understanding without reading full files
|
|
453
|
+
- Decision traceability
|
|
252
454
|
|
|
253
|
-
|
|
455
|
+
---
|
|
254
456
|
|
|
255
|
-
Contributing to JFL
|
|
457
|
+
## Contributing to JFL
|
|
256
458
|
|
|
257
459
|
```bash
|
|
258
|
-
# Clone
|
|
460
|
+
# Clone via GTM structure
|
|
259
461
|
jfl init my-jfl-gtm
|
|
260
462
|
# During setup, add: https://github.com/402goose/just-fucking-launch.git
|
|
261
463
|
|
|
@@ -263,8 +465,8 @@ jfl init my-jfl-gtm
|
|
|
263
465
|
cd my-jfl-gtm/product
|
|
264
466
|
./scripts/dev-setup.sh
|
|
265
467
|
|
|
266
|
-
# Work in the submodule
|
|
267
|
-
cd
|
|
468
|
+
# Work in the CLI submodule
|
|
469
|
+
cd cli
|
|
268
470
|
npm install
|
|
269
471
|
npm run build
|
|
270
472
|
|
|
@@ -272,42 +474,68 @@ npm run build
|
|
|
272
474
|
npm link
|
|
273
475
|
```
|
|
274
476
|
|
|
477
|
+
---
|
|
478
|
+
|
|
275
479
|
## Environment Variables
|
|
276
480
|
|
|
277
481
|
```bash
|
|
278
482
|
CRM_SHEET_ID=your-sheet-id # Google Sheets CRM integration
|
|
279
483
|
```
|
|
280
484
|
|
|
485
|
+
---
|
|
486
|
+
|
|
281
487
|
## Files You'll Work With
|
|
282
488
|
|
|
283
489
|
```
|
|
284
|
-
.jfl/
|
|
490
|
+
.jfl/
|
|
491
|
+
├── config.json # Project configuration
|
|
492
|
+
├── journal/ # Session journals (JSONL)
|
|
493
|
+
├── context-hub.pid # Context Hub daemon PID
|
|
494
|
+
└── logs/ # Session logs
|
|
495
|
+
|
|
285
496
|
knowledge/ # Strategy docs (you fill these)
|
|
286
497
|
content/ # Generated content
|
|
287
498
|
suggestions/{name}.md # Per-person working space
|
|
288
499
|
previews/ # Generated assets
|
|
289
500
|
```
|
|
290
501
|
|
|
291
|
-
|
|
502
|
+
---
|
|
503
|
+
|
|
504
|
+
## Help & Support
|
|
292
505
|
|
|
293
506
|
```bash
|
|
294
507
|
jfl help # Show all commands
|
|
295
508
|
jfl --version # Show version
|
|
296
509
|
```
|
|
297
510
|
|
|
298
|
-
|
|
299
|
-
- GitHub: https://github.com/402goose/
|
|
300
|
-
-
|
|
511
|
+
**Issues & Feedback:**
|
|
512
|
+
- GitHub: https://github.com/402goose/jfl-cli/issues
|
|
513
|
+
- X: [@taggaoyl](https://x.com/taggaoyl)
|
|
514
|
+
|
|
515
|
+
---
|
|
516
|
+
|
|
517
|
+
## What's New in 0.1.0
|
|
518
|
+
|
|
519
|
+
- ✨ Auto-update on session start (checks npm registry, 24h cache)
|
|
520
|
+
- 🔍 Synopsis command (`jfl synopsis [hours] [author]`)
|
|
521
|
+
- 🏥 Improved doctor checks with categorized output
|
|
522
|
+
- 🐛 Fixed auto-merge failure that caused branch pileup
|
|
523
|
+
- 📊 Context Hub productization improvements
|
|
524
|
+
|
|
525
|
+
---
|
|
301
526
|
|
|
302
527
|
## License
|
|
303
528
|
|
|
304
529
|
MIT License - see LICENSE file for details.
|
|
305
530
|
|
|
531
|
+
---
|
|
532
|
+
|
|
306
533
|
## Credits
|
|
307
534
|
|
|
308
535
|
Built by [@tagga](https://x.com/taggaoyl) (Alec Taggart)
|
|
309
536
|
|
|
310
537
|
Powered by:
|
|
311
|
-
- Claude (Anthropic)
|
|
312
|
-
- x402 (crypto micropayments)
|
|
538
|
+
- [Claude](https://claude.ai) (Anthropic)
|
|
539
|
+
- [x402](https://402.com) (crypto micropayments)
|
|
313
540
|
- Commander.js, Inquirer, Chalk, and more
|
|
541
|
+
|