fathom-cli 0.1.0 → 0.1.2
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 +173 -0
- package/dist/data/remote-manifest.json +78 -0
- package/dist/index.js +608 -26
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-FILMHRDQ.js +0 -2055
- package/dist/chunk-FILMHRDQ.js.map +0 -1
- package/dist/chunk-SEGVTWSK.js +0 -44
- package/dist/chunk-SEGVTWSK.js.map +0 -1
- package/dist/fileFromPath-AY5NHOFK.js +0 -131
- package/dist/fileFromPath-AY5NHOFK.js.map +0 -1
- package/dist/sdk-OEGEIPVM.js +0 -7829
- package/dist/sdk-OEGEIPVM.js.map +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# fathom-cli
|
|
2
|
+
|
|
3
|
+
Workflow intelligence for AI-augmented development. Estimate token costs before work, automatically track actuals during work, reconcile and calibrate after work, and build velocity benchmarks over time.
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
intake → estimate → build (tracked) → reconcile → calibrate → velocity
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g fathom-cli
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Quick estimate — "how much will this cost?"
|
|
19
|
+
# AI scores complexity automatically when ANTHROPIC_API_KEY is set
|
|
20
|
+
fathom estimate "React dashboard with OAuth"
|
|
21
|
+
|
|
22
|
+
# Generate a full spec sheet — "break this down into work items"
|
|
23
|
+
fathom intake "Users say the calendar is slow and Zoom links are missing" --project myapp
|
|
24
|
+
|
|
25
|
+
# Analyze a full spec with multiple features
|
|
26
|
+
fathom analyze spec.md --project myapp
|
|
27
|
+
|
|
28
|
+
# Scaffold tracking for an existing project
|
|
29
|
+
fathom setup --project myapp
|
|
30
|
+
|
|
31
|
+
# Import and auto-tag Claude Code sessions
|
|
32
|
+
fathom track --project myapp
|
|
33
|
+
|
|
34
|
+
# Compare estimates vs actuals
|
|
35
|
+
fathom reconcile --project myapp
|
|
36
|
+
|
|
37
|
+
# See velocity metrics
|
|
38
|
+
fathom velocity --project myapp
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Commands
|
|
42
|
+
|
|
43
|
+
| Command | Description |
|
|
44
|
+
|---------|-------------|
|
|
45
|
+
| `fathom estimate <desc>` | Quick cost estimate — AI scores complexity, returns tokens + cost |
|
|
46
|
+
| `fathom intake <text>` | Generate spec sheet — extracts work items, estimates each, outputs markdown |
|
|
47
|
+
| `fathom analyze <spec>` | Parse spec, estimate all features, generate registry |
|
|
48
|
+
| `fathom track` | Import Claude Code sessions, auto-tag to features |
|
|
49
|
+
| `fathom reconcile` | Compare estimates vs actuals per feature |
|
|
50
|
+
| `fathom calibrate` | Show drift and suggest profile adjustments |
|
|
51
|
+
| `fathom velocity` | Velocity metrics and benchmarks |
|
|
52
|
+
| `fathom status` | Project overview with tracking data |
|
|
53
|
+
| `fathom pricing` | Show current model pricing |
|
|
54
|
+
| `fathom setup` | Scaffold `.claude/` skill + hooks + registry |
|
|
55
|
+
| `fathom validate <spec>` | Validate spec file format |
|
|
56
|
+
| `fathom init` | Initialize global config |
|
|
57
|
+
|
|
58
|
+
## How It Works
|
|
59
|
+
|
|
60
|
+
### 1. Estimate vs Intake (Before Work)
|
|
61
|
+
|
|
62
|
+
**`estimate`** — quick cost number from a description:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
fathom estimate "Build a real-time chat system with WebSocket support"
|
|
66
|
+
# AI analyzes → L complexity, 205K tokens, $2.51, recommends Sonnet
|
|
67
|
+
# Use --complexity M to override, --no-ai for heuristic-only scoring
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**`intake`** — full spec sheet from raw feedback:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
fathom intake "Users need real-time chat and the Zoom integration is broken" --project myapp
|
|
74
|
+
# Extracts discrete work items, classifies each by complexity/priority,
|
|
75
|
+
# estimates tokens + cost per item, attaches velocity benchmarks,
|
|
76
|
+
# outputs structured markdown spec ready for implementation
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Use `estimate` when you want a quick number. Use `intake` when you want a plan.
|
|
80
|
+
|
|
81
|
+
Both use a calibrated model: base tokens per task type × complexity multiplier × overhead (context resend, tool calls, thinking, error recovery, planning, review).
|
|
82
|
+
|
|
83
|
+
### 2. Track (During Work)
|
|
84
|
+
|
|
85
|
+
Fathom automatically discovers Claude Code sessions from `~/.claude/projects/` and tags them to features using a 4-signal cascade:
|
|
86
|
+
|
|
87
|
+
1. **Explicit feature ID** in conversation → 99% confidence
|
|
88
|
+
2. **Git branch** pattern match → 85%
|
|
89
|
+
3. **Keyword** match → 75%
|
|
90
|
+
4. **File path** match → 70%
|
|
91
|
+
|
|
92
|
+
Zero configuration needed — just run `fathom track`.
|
|
93
|
+
|
|
94
|
+
### 3. Reconcile + Calibrate (After Work)
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
fathom reconcile --project myapp
|
|
98
|
+
# Shows: Feature | Estimated | Actual | Drift% | Cost | Sessions
|
|
99
|
+
|
|
100
|
+
fathom calibrate --project myapp
|
|
101
|
+
# Shows: Feature | Drift | Suggested adjustment multiplier
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Over time, your estimates get more accurate as the profiles learn from real data.
|
|
105
|
+
|
|
106
|
+
### 4. Velocity Intelligence
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
fathom velocity --project myapp --benchmarks
|
|
110
|
+
# "M-complexity React components: $0.85 avg, 1.1 days, 2.8 sessions"
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Dashboard
|
|
114
|
+
|
|
115
|
+
Fathom includes a real-time web dashboard (Next.js + Convex) with 7 views: overview, projects, burn-down, intake queue, cost analytics, velocity benchmarks, and calibration health.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Set up Convex sync (optional — CLI works fully offline)
|
|
119
|
+
export CONVEX_URL=https://your-deployment.convex.cloud
|
|
120
|
+
|
|
121
|
+
# All commands auto-sync when CONVEX_URL is set
|
|
122
|
+
fathom analyze spec.md --project myapp # → syncs estimates
|
|
123
|
+
fathom track --project myapp # → syncs actuals
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
See the [full repo](https://github.com/olivelliott/fathom) for dashboard setup.
|
|
127
|
+
|
|
128
|
+
## Intake Pipeline
|
|
129
|
+
|
|
130
|
+
Turn raw feedback into estimated, structured work items:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# From text
|
|
134
|
+
fathom intake "Users say the calendar is slow and Zoom links are missing" --project myapp
|
|
135
|
+
|
|
136
|
+
# From a file
|
|
137
|
+
fathom intake --file meeting-notes.md --project myapp --markdown
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Requires `ANTHROPIC_API_KEY` environment variable.
|
|
141
|
+
|
|
142
|
+
## Environment Variables
|
|
143
|
+
|
|
144
|
+
| Variable | Required | Purpose |
|
|
145
|
+
|----------|----------|---------|
|
|
146
|
+
| `ANTHROPIC_API_KEY` | For `estimate` + `intake` | AI complexity scoring and work item extraction |
|
|
147
|
+
| `CONVEX_URL` | Optional | Enable dashboard sync |
|
|
148
|
+
|
|
149
|
+
## Spec Format
|
|
150
|
+
|
|
151
|
+
Fathom parses markdown specs with `### Feature:` headings:
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
### Feature: User Authentication
|
|
155
|
+
- **Complexity**: L
|
|
156
|
+
- **Category**: Infrastructure
|
|
157
|
+
- **Description**: OAuth2 with Google + email/password login
|
|
158
|
+
|
|
159
|
+
### Feature: Dashboard
|
|
160
|
+
- **Complexity**: M
|
|
161
|
+
- **Category**: Frontend
|
|
162
|
+
- **Description**: Main dashboard with metrics and charts
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Links
|
|
166
|
+
|
|
167
|
+
- [GitHub Repository](https://github.com/olivelliott/fathom)
|
|
168
|
+
- [Roadmap](https://github.com/olivelliott/fathom/blob/main/ROADMAP.md)
|
|
169
|
+
- [Report an Issue](https://github.com/olivelliott/fathom/issues)
|
|
170
|
+
|
|
171
|
+
## License
|
|
172
|
+
|
|
173
|
+
MIT
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"updated": "2026-03-05",
|
|
4
|
+
"models": [
|
|
5
|
+
{
|
|
6
|
+
"id": "claude-opus-4-6",
|
|
7
|
+
"provider": "anthropic",
|
|
8
|
+
"name": "Claude Opus 4.6",
|
|
9
|
+
"input_per_mtok": 15.0,
|
|
10
|
+
"output_per_mtok": 75.0,
|
|
11
|
+
"cache_read_per_mtok": 1.5,
|
|
12
|
+
"batch_discount": 0.5,
|
|
13
|
+
"tier": "frontier"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "claude-sonnet-4-6",
|
|
17
|
+
"provider": "anthropic",
|
|
18
|
+
"name": "Claude Sonnet 4.6",
|
|
19
|
+
"input_per_mtok": 3.0,
|
|
20
|
+
"output_per_mtok": 15.0,
|
|
21
|
+
"cache_read_per_mtok": 0.3,
|
|
22
|
+
"batch_discount": 0.5,
|
|
23
|
+
"tier": "balanced"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "claude-haiku-4-5",
|
|
27
|
+
"provider": "anthropic",
|
|
28
|
+
"name": "Claude Haiku 4.5",
|
|
29
|
+
"input_per_mtok": 1.0,
|
|
30
|
+
"output_per_mtok": 5.0,
|
|
31
|
+
"cache_read_per_mtok": 0.1,
|
|
32
|
+
"batch_discount": 0.5,
|
|
33
|
+
"tier": "speed"
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"recommendations": {
|
|
37
|
+
"architecture": {
|
|
38
|
+
"model": "claude-opus-4-6",
|
|
39
|
+
"reason": "Deep reasoning, trade-off analysis"
|
|
40
|
+
},
|
|
41
|
+
"complex-implementation": {
|
|
42
|
+
"model": "claude-sonnet-4-6",
|
|
43
|
+
"reason": "Best cost/capability for multi-file coding"
|
|
44
|
+
},
|
|
45
|
+
"standard-crud": {
|
|
46
|
+
"model": "claude-sonnet-4-6",
|
|
47
|
+
"reason": "Reliable, fast, cost-effective"
|
|
48
|
+
},
|
|
49
|
+
"scaffolding": {
|
|
50
|
+
"model": "claude-haiku-4-5",
|
|
51
|
+
"reason": "Speed + cost over reasoning depth"
|
|
52
|
+
},
|
|
53
|
+
"documentation": {
|
|
54
|
+
"model": "claude-haiku-4-5",
|
|
55
|
+
"reason": "Straightforward generation"
|
|
56
|
+
},
|
|
57
|
+
"test-generation": {
|
|
58
|
+
"model": "claude-sonnet-4-6",
|
|
59
|
+
"reason": "Needs code logic understanding"
|
|
60
|
+
},
|
|
61
|
+
"code-review": {
|
|
62
|
+
"model": "claude-opus-4-6",
|
|
63
|
+
"reason": "Benefits from deeper reasoning"
|
|
64
|
+
},
|
|
65
|
+
"debugging": {
|
|
66
|
+
"model": "claude-opus-4-6",
|
|
67
|
+
"reason": "Benefits from deeper reasoning"
|
|
68
|
+
},
|
|
69
|
+
"refactoring-architectural": {
|
|
70
|
+
"model": "claude-opus-4-6",
|
|
71
|
+
"reason": "Needs system-wide understanding"
|
|
72
|
+
},
|
|
73
|
+
"refactoring-mechanical": {
|
|
74
|
+
"model": "claude-sonnet-4-6",
|
|
75
|
+
"reason": "Pattern application"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|