aiblueprint-cli 1.4.59 → 1.4.61
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 +16 -36
- package/agents-config/agents/action.md +1 -1
- package/agents-config/agents/explore-codebase.md +53 -53
- package/agents-config/agents/explore-docs.md +50 -69
- package/agents-config/agents/websearch.md +36 -40
- package/agents-config/claude-config/scripts/.claude/skills/fix-on-my-computer/SKILL.md +81 -0
- package/agents-config/claude-config/scripts/CLAUDE.md +10 -4
- package/agents-config/claude-config/scripts/bun.lockb +0 -0
- package/agents-config/claude-config/scripts/package.json +22 -30
- package/agents-config/claude-config/scripts/statusline/CLAUDE.md +37 -155
- package/agents-config/claude-config/scripts/statusline/README.md +18 -94
- package/agents-config/claude-config/scripts/statusline/defaults.json +13 -10
- package/agents-config/claude-config/scripts/statusline/fixtures/mock-transcript.jsonl +4 -4
- package/agents-config/claude-config/scripts/statusline/fixtures/test-input.json +4 -4
- package/agents-config/claude-config/scripts/statusline/src/commands/interactive-config.ts +403 -0
- package/agents-config/claude-config/scripts/statusline/src/index.ts +33 -82
- package/agents-config/claude-config/scripts/statusline/src/lib/config-types.ts +7 -1
- package/agents-config/claude-config/scripts/statusline/src/lib/formatters.ts +40 -0
- package/agents-config/claude-config/scripts/statusline/src/lib/presets.ts +13 -13
- package/agents-config/claude-config/scripts/statusline/src/lib/render-pure.ts +24 -5
- package/agents-config/claude-config/scripts/statusline/statusline.config.free.json +79 -0
- package/agents-config/claude-config/scripts/statusline/statusline.config.json +77 -77
- package/agents-config/codex-config/config.toml +9 -0
- package/agents-config/codex-config/hooks/command-deny-list.ts +203 -0
- package/agents-config/commands/prompts/create-vitejs-app.md +272 -0
- package/agents-config/commands/prompts/nextjs-add-prisma-db.md +136 -0
- package/agents-config/commands/prompts/nextjs-setup-better-auth.md +173 -0
- package/agents-config/commands/prompts/nextjs-setup-project.md +200 -0
- package/agents-config/commands/prompts/prompt.md +55 -0
- package/agents-config/commands/prompts/saas-challenge-idea.md +135 -0
- package/agents-config/commands/prompts/saas-create-architecture.md +242 -0
- package/agents-config/commands/prompts/saas-create-headline.md +132 -0
- package/agents-config/commands/prompts/saas-create-landing-copywritting.md +267 -0
- package/agents-config/commands/prompts/saas-create-legals-docs.md +176 -0
- package/agents-config/commands/prompts/saas-create-logos.md +240 -0
- package/agents-config/commands/prompts/saas-create-prd.md +195 -0
- package/agents-config/commands/prompts/saas-create-tasks.md +240 -0
- package/agents-config/commands/prompts/saas-define-pricing.md +293 -0
- package/agents-config/commands/prompts/saas-find-domain-name.md +190 -0
- package/agents-config/commands/prompts/saas-implement-landing-page.md +257 -0
- package/agents-config/commands/prompts/setup-tmux.md +160 -0
- package/agents-config/commands/prompts/tools.md +148 -0
- package/agents-config/scripts/.claude/skills/fix-on-my-computer/SKILL.md +81 -0
- package/agents-config/scripts/CLAUDE.md +37 -0
- package/agents-config/scripts/biome.json +37 -0
- package/agents-config/scripts/bun.lockb +0 -0
- package/agents-config/scripts/package.json +24 -0
- package/agents-config/scripts/statusline/CLAUDE.md +87 -0
- package/agents-config/scripts/statusline/README.md +117 -0
- package/agents-config/scripts/statusline/__tests__/context.test.ts +229 -0
- package/agents-config/scripts/statusline/__tests__/formatters.test.ts +108 -0
- package/agents-config/scripts/statusline/__tests__/statusline.test.ts +309 -0
- package/agents-config/scripts/statusline/defaults.json +82 -0
- package/agents-config/scripts/statusline/fixtures/mock-transcript.jsonl +4 -0
- package/agents-config/scripts/statusline/fixtures/test-input.json +35 -0
- package/agents-config/scripts/statusline/src/commands/interactive-config.ts +403 -0
- package/agents-config/scripts/statusline/src/index.ts +141 -0
- package/agents-config/scripts/statusline/src/lib/config-types.ts +110 -0
- package/agents-config/scripts/statusline/src/lib/config.ts +21 -0
- package/agents-config/scripts/statusline/src/lib/context.ts +103 -0
- package/agents-config/scripts/statusline/src/lib/formatters.ts +426 -0
- package/agents-config/scripts/statusline/src/lib/git.ts +100 -0
- package/agents-config/scripts/statusline/src/lib/menu-factories.ts +224 -0
- package/agents-config/scripts/statusline/src/lib/presets.ts +177 -0
- package/agents-config/scripts/statusline/src/lib/render-pure.ts +516 -0
- package/agents-config/scripts/statusline/src/lib/types.ts +36 -0
- package/agents-config/scripts/statusline/src/lib/utils.ts +15 -0
- package/agents-config/scripts/statusline/statusline.config.free.json +79 -0
- package/agents-config/scripts/statusline/statusline.config.json +79 -0
- package/agents-config/scripts/statusline/test-with-fixtures.ts +37 -0
- package/agents-config/scripts/statusline/test.ts +20 -0
- package/agents-config/scripts/statusline/tsconfig.json +27 -0
- package/agents-config/scripts/tsconfig.json +27 -0
- package/agents-config/skills/{subagent-creator → agents-managers}/SKILL.md +47 -47
- package/agents-config/skills/{subagent-creator/references/subagents.md → agents-managers/references/agents.md} +45 -45
- package/agents-config/skills/{subagent-creator → agents-managers}/references/context-management.md +20 -20
- package/agents-config/skills/{subagent-creator → agents-managers}/references/debugging-agents.md +27 -27
- package/agents-config/skills/{subagent-creator → agents-managers}/references/error-handling-and-recovery.md +19 -19
- package/agents-config/skills/{subagent-creator → agents-managers}/references/evaluation-and-testing.md +29 -29
- package/agents-config/skills/{subagent-creator → agents-managers}/references/orchestration-patterns.md +5 -5
- package/agents-config/skills/{subagent-creator/references/writing-subagent-prompts.md → agents-managers/references/writing-agent-prompts.md} +23 -23
- package/agents-config/skills/codex-environment/SKILL.md +2 -0
- package/agents-config/skills/commit/SKILL.md +2 -0
- package/agents-config/skills/create-pr/SKILL.md +2 -0
- package/agents-config/skills/environments-manager/SKILL.md +271 -0
- package/agents-config/skills/environments-manager/examples/claude/.worktreeinclude +3 -0
- package/agents-config/skills/environments-manager/examples/claude/commands/dev.md +5 -0
- package/agents-config/skills/environments-manager/examples/claude/commands/lint.md +5 -0
- package/agents-config/skills/environments-manager/examples/claude/commands/test.md +5 -0
- package/agents-config/skills/environments-manager/examples/claude/commands/typecheck.md +5 -0
- package/agents-config/skills/environments-manager/examples/claude/settings.json +24 -0
- package/agents-config/skills/environments-manager/examples/codex/environments/environment.toml +29 -0
- package/agents-config/skills/environments-manager/examples/cursor/worktrees.json +3 -0
- package/agents-config/skills/environments-manager/examples/scripts/claude-worktree-create.sh +96 -0
- package/agents-config/skills/environments-manager/examples/scripts/claude-worktree-remove.sh +66 -0
- package/agents-config/skills/environments-manager/examples/scripts/dev.sh +15 -0
- package/agents-config/skills/environments-manager/examples/scripts/worktree-down.sh +22 -0
- package/agents-config/skills/environments-manager/examples/scripts/worktree-up.sh +50 -0
- package/agents-config/skills/environments-manager/references/claude.md +156 -0
- package/agents-config/skills/environments-manager/references/codex.md +97 -0
- package/agents-config/skills/environments-manager/references/cursor.md +88 -0
- package/agents-config/skills/fix-pr-comments/SKILL.md +2 -0
- package/agents-config/skills/grill-me/SKILL.md +10 -0
- package/agents-config/skills/merge/SKILL.md +2 -0
- package/agents-config/skills/rules-manager/SKILL.md +191 -0
- package/agents-config/skills/rules-manager/references/agents-vs-claude.md +66 -0
- package/agents-config/skills/rules-manager/references/examples.md +117 -0
- package/agents-config/skills/skill-manager/SKILL.md +101 -0
- package/agents-config/skills/skill-manager/references/claude-code.md +81 -0
- package/agents-config/skills/skill-manager/references/codex.md +288 -0
- package/agents-config/skills/skill-manager/references/cursor.md +125 -0
- package/agents-config/skills/skill-manager/references/description-recommandation.md +97 -0
- package/agents-config/skills/skill-manager/scripts/inspect-description.ts +743 -0
- package/agents-config/skills/ultrathink/SKILL.md +2 -0
- package/dist/cli.js +581 -299
- package/package.json +1 -1
- package/agents-config/claude-config/scripts/statusline/data/.gitignore +0 -8
- package/agents-config/claude-config/scripts/statusline/data/.gitkeep +0 -0
- package/agents-config/claude-config/scripts/statusline/docs/ARCHITECTURE.md +0 -166
- package/agents-config/claude-config/scripts/statusline/src/tests/spend-v2.test.ts +0 -306
- package/agents-config/skills/apex/SKILL.md +0 -261
- package/agents-config/skills/apex/scripts/setup-templates.sh +0 -100
- package/agents-config/skills/apex/scripts/update-progress.sh +0 -80
- package/agents-config/skills/apex/steps/step-00-init.md +0 -267
- package/agents-config/skills/apex/steps/step-00b-branch.md +0 -126
- package/agents-config/skills/apex/steps/step-00b-economy.md +0 -244
- package/agents-config/skills/apex/steps/step-00b-interactive.md +0 -153
- package/agents-config/skills/apex/steps/step-01-analyze.md +0 -361
- package/agents-config/skills/apex/steps/step-02-plan.md +0 -264
- package/agents-config/skills/apex/steps/step-03-execute.md +0 -239
- package/agents-config/skills/apex/steps/step-04-validate.md +0 -251
- package/agents-config/skills/apex/templates/00-context.md +0 -43
- package/agents-config/skills/apex/templates/01-analyze.md +0 -10
- package/agents-config/skills/apex/templates/02-plan.md +0 -10
- package/agents-config/skills/apex/templates/03-execute.md +0 -10
- package/agents-config/skills/apex/templates/04-validate.md +0 -10
- package/agents-config/skills/apex/templates/README.md +0 -176
- package/agents-config/skills/apex/templates/step-complete.md +0 -7
- package/agents-config/skills/claude-memory/SKILL.md +0 -293
- package/agents-config/skills/claude-memory/references/comprehensive-example.md +0 -175
- package/agents-config/skills/claude-memory/references/optimize-guide.md +0 -300
- package/agents-config/skills/claude-memory/references/project-patterns.md +0 -334
- package/agents-config/skills/claude-memory/references/prompting-techniques.md +0 -411
- package/agents-config/skills/claude-memory/references/rules-directory-guide.md +0 -298
- package/agents-config/skills/claude-memory/references/section-templates.md +0 -347
- package/agents-config/skills/fix-errors/SKILL.md +0 -61
- package/agents-config/skills/fix-grammar/SKILL.md +0 -59
- package/agents-config/skills/ralph-loop/SKILL.md +0 -117
- package/agents-config/skills/ralph-loop/scripts/setup.sh +0 -278
- package/agents-config/skills/ralph-loop/steps/step-00-init.md +0 -215
- package/agents-config/skills/ralph-loop/steps/step-01-interactive-prd.md +0 -366
- package/agents-config/skills/ralph-loop/steps/step-02-create-stories.md +0 -273
- package/agents-config/skills/ralph-loop/steps/step-03-finish.md +0 -245
- package/agents-config/skills/skill-creator/LICENSE.txt +0 -202
- package/agents-config/skills/skill-creator/SKILL.md +0 -421
- package/agents-config/skills/skill-creator/package.json +0 -5
- package/agents-config/skills/skill-creator/references/output-patterns.md +0 -82
- package/agents-config/skills/skill-creator/references/progressive-disclosure-patterns.md +0 -374
- package/agents-config/skills/skill-creator/references/prompting-integration.md +0 -363
- package/agents-config/skills/skill-creator/references/real-world-examples.md +0 -513
- package/agents-config/skills/skill-creator/references/script-patterns.md +0 -385
- package/agents-config/skills/skill-creator/references/workflows.md +0 -28
- package/agents-config/skills/skill-creator/references/xml-tag-guide.md +0 -606
- package/agents-config/skills/skill-creator/scripts/init-skill.ts +0 -214
- package/agents-config/skills/skill-creator/scripts/package-skill.ts +0 -146
- package/agents-config/skills/skill-creator/scripts/validate.ts +0 -138
- package/agents-config/skills/workflow-apex-free/SKILL.md +0 -261
- package/agents-config/skills/workflow-apex-free/scripts/setup-templates.sh +0 -100
- package/agents-config/skills/workflow-apex-free/scripts/update-progress.sh +0 -80
- package/agents-config/skills/workflow-apex-free/steps/step-00-init.md +0 -267
- package/agents-config/skills/workflow-apex-free/steps/step-00b-branch.md +0 -126
- package/agents-config/skills/workflow-apex-free/steps/step-00b-economy.md +0 -244
- package/agents-config/skills/workflow-apex-free/steps/step-00b-interactive.md +0 -153
- package/agents-config/skills/workflow-apex-free/steps/step-01-analyze.md +0 -361
- package/agents-config/skills/workflow-apex-free/steps/step-02-plan.md +0 -264
- package/agents-config/skills/workflow-apex-free/steps/step-03-execute.md +0 -239
- package/agents-config/skills/workflow-apex-free/steps/step-04-validate.md +0 -251
- package/agents-config/skills/workflow-apex-free/templates/00-context.md +0 -43
- package/agents-config/skills/workflow-apex-free/templates/01-analyze.md +0 -10
- package/agents-config/skills/workflow-apex-free/templates/02-plan.md +0 -10
- package/agents-config/skills/workflow-apex-free/templates/03-execute.md +0 -10
- package/agents-config/skills/workflow-apex-free/templates/04-validate.md +0 -10
- package/agents-config/skills/workflow-apex-free/templates/README.md +0 -176
- package/agents-config/skills/workflow-apex-free/templates/step-complete.md +0 -7
|
@@ -2,18 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
## Overview
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Lightweight, type-safe statusline implementation for Claude Code using Bun and TypeScript. Displays session context, git status, model information, duration, and context usage without premium spend or usage-limit tracking.
|
|
6
6
|
|
|
7
7
|
## Project Setup & Configuration
|
|
8
8
|
|
|
9
9
|
### Dependencies
|
|
10
10
|
|
|
11
|
-
- **Bun**: Runtime
|
|
12
|
-
-
|
|
11
|
+
- **Bun**: Runtime
|
|
12
|
+
- **picocolors**: Terminal colors
|
|
13
|
+
- **@biomejs/biome**: Linting and formatting
|
|
13
14
|
- **TypeScript**: Type safety
|
|
14
15
|
|
|
15
|
-
No external npm packages required - pure Bun APIs.
|
|
16
|
-
|
|
17
16
|
### Configuration in Claude Code
|
|
18
17
|
|
|
19
18
|
Add to `~/.claude/settings.json`:
|
|
@@ -22,184 +21,67 @@ Add to `~/.claude/settings.json`:
|
|
|
22
21
|
{
|
|
23
22
|
"statusLine": {
|
|
24
23
|
"type": "command",
|
|
25
|
-
"command": "bun
|
|
24
|
+
"command": "bun /Users/melvynx/.claude/scripts/statusline/src/index.ts",
|
|
26
25
|
"padding": 0
|
|
27
26
|
}
|
|
28
27
|
}
|
|
29
28
|
```
|
|
30
29
|
|
|
31
|
-
### Authentication
|
|
32
|
-
|
|
33
|
-
OAuth token stored in macOS Keychain:
|
|
34
|
-
|
|
35
|
-
- **Service**: `Claude Code-credentials`
|
|
36
|
-
- **Format**: JSON with `claudeAiOauth.accessToken`
|
|
37
|
-
- **Token type**: `sk-ant-oat01-...` (OAuth token, not API key)
|
|
38
|
-
- **Access**: `security find-generic-password -s "Claude Code-credentials" -w`
|
|
39
|
-
|
|
40
30
|
## Architecture
|
|
41
31
|
|
|
42
|
-
### Modular Design
|
|
43
|
-
|
|
44
|
-
The project follows a clean architecture with separated concerns:
|
|
45
|
-
|
|
46
32
|
```
|
|
47
33
|
src/
|
|
48
|
-
├── index.ts # Main entry
|
|
34
|
+
├── index.ts # Main entry point
|
|
49
35
|
└── lib/
|
|
50
|
-
├── types.ts # TypeScript interfaces
|
|
51
|
-
├── git.ts # Git operations
|
|
52
|
-
├── context.ts #
|
|
53
|
-
├──
|
|
54
|
-
└── formatters.ts # Display utilities
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Data Flow
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
Claude Code Hook → stdin JSON → index.ts
|
|
61
|
-
↓
|
|
62
|
-
┌───────────────┴───────────────┐
|
|
63
|
-
↓ ↓
|
|
64
|
-
[Get Git Status] [Get Context Data]
|
|
65
|
-
↓ ↓
|
|
66
|
-
[Format Branch] [Get Usage Limits]
|
|
67
|
-
↓ ↓
|
|
68
|
-
└───────────────┬───────────────┘
|
|
69
|
-
↓
|
|
70
|
-
[Build Output Lines]
|
|
71
|
-
↓
|
|
72
|
-
stdout (2 lines)
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Component Specifications
|
|
76
|
-
|
|
77
|
-
### Context Calculation (`lib/context.ts`)
|
|
78
|
-
|
|
79
|
-
- **Purpose**: Calculate token usage from Claude Code transcript files
|
|
80
|
-
- **Algorithm**: Parses `.jsonl` transcript, finds most recent main-chain entry
|
|
81
|
-
- **Tokens counted**: `input_tokens + cache_read_input_tokens + cache_creation_input_tokens`
|
|
82
|
-
- **Excludes**: Sidechain entries (agent calls), API error messages
|
|
83
|
-
- **Output**: `{ tokens: number, percentage: number }` (0-100% of 200k context)
|
|
84
|
-
|
|
85
|
-
### Usage Limits (`lib/usage-limits.ts`)
|
|
86
|
-
|
|
87
|
-
- **Purpose**: Fetch Claude API rate limits from OAuth endpoint
|
|
88
|
-
- **Auth**: Retrieves OAuth token from macOS Keychain (`Claude Code-credentials`)
|
|
89
|
-
- **API**: `https://api.anthropic.com/api/oauth/usage`
|
|
90
|
-
- **Data**: Five-hour window utilization + reset time
|
|
91
|
-
- **Error handling**: Fails silently, returns null on errors
|
|
92
|
-
|
|
93
|
-
### Git Status (`lib/git.ts`)
|
|
94
|
-
|
|
95
|
-
- **Purpose**: Show current branch and uncommitted changes
|
|
96
|
-
- **Detection**: Checks both staged and unstaged changes
|
|
97
|
-
- **Output**: Branch name + line additions/deletions
|
|
98
|
-
- **Display**: `main* (+123 -45)` with color coding
|
|
99
|
-
|
|
100
|
-
### Formatters (`lib/formatters.ts`)
|
|
101
|
-
|
|
102
|
-
- **Colors**: ANSI color codes for terminal output
|
|
103
|
-
- **Token display**: `62.5K`, `1.2M` format
|
|
104
|
-
- **Time formatting**: `3h21m`, `45m` for countdowns
|
|
105
|
-
- **Reset time**: Calculates difference between API reset time and now
|
|
106
|
-
|
|
107
|
-
## Output Specification
|
|
108
|
-
|
|
109
|
-
### Line 1: Session Info
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
main* (+123 -45) | ~/.claude | Sonnet 4.5
|
|
36
|
+
├── types.ts # TypeScript interfaces
|
|
37
|
+
├── git.ts # Git operations
|
|
38
|
+
├── context.ts # Payload/transcript context calculation
|
|
39
|
+
├── render-pure.ts # Pure rendering logic
|
|
40
|
+
└── formatters.ts # Display utilities and colors
|
|
113
41
|
```
|
|
114
42
|
|
|
115
|
-
|
|
43
|
+
## Data Flow
|
|
116
44
|
|
|
117
45
|
```
|
|
118
|
-
|
|
46
|
+
Claude Code hook -> stdin JSON -> index.ts
|
|
47
|
+
-> get git status
|
|
48
|
+
-> get context data
|
|
49
|
+
-> render statusline
|
|
50
|
+
-> stdout
|
|
119
51
|
```
|
|
120
52
|
|
|
121
|
-
|
|
53
|
+
## Component Notes
|
|
122
54
|
|
|
123
|
-
-
|
|
124
|
-
- `
|
|
125
|
-
- `
|
|
126
|
-
- `
|
|
127
|
-
- `15%` - Five-hour usage (from Claude API)
|
|
128
|
-
- `(3h27m)` - Time until rate limit resets
|
|
55
|
+
- `lib/context.ts` calculates context tokens from the hook payload when available, falling back to transcript parsing.
|
|
56
|
+
- `lib/git.ts` detects branch and staged/unstaged changes.
|
|
57
|
+
- `lib/render-pure.ts` renders output from prepared data and config.
|
|
58
|
+
- `src/commands/interactive-config.ts` must stay in sync with `statusline.config.json`.
|
|
129
59
|
|
|
130
60
|
## Development
|
|
131
61
|
|
|
132
|
-
### Testing
|
|
133
|
-
|
|
134
62
|
```bash
|
|
135
|
-
# Run test with fixture
|
|
136
63
|
bun run test
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
bun run test fixtures/custom.json
|
|
140
|
-
|
|
141
|
-
# Manual test
|
|
142
|
-
echo '{ ... }' | bun run start
|
|
64
|
+
bun run statusline:test-fixtures
|
|
65
|
+
bun run statusline:config
|
|
143
66
|
```
|
|
144
67
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
- **ALWAYS** use camelCase for variables and functions
|
|
148
|
-
- Use TypeScript strict mode
|
|
149
|
-
- Follow Biome formatting rules
|
|
150
|
-
|
|
151
|
-
### Error Handling & Performance
|
|
152
|
-
|
|
153
|
-
**Error Handling** - All components fail silently:
|
|
154
|
-
|
|
155
|
-
- Missing transcript → 0 tokens, 0%
|
|
156
|
-
- API failure → No usage limits shown
|
|
157
|
-
- Git errors → "no-git" branch
|
|
158
|
-
- Keychain access denied → No usage limits
|
|
159
|
-
|
|
160
|
-
This ensures statusline never crashes Claude Code.
|
|
68
|
+
Manual test:
|
|
161
69
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
- API call: ~100-300ms (cached by Claude API)
|
|
166
|
-
- Git operations: ~20-50ms
|
|
167
|
-
- Total: < 500ms typical
|
|
168
|
-
|
|
169
|
-
## Maintenance Guide
|
|
170
|
-
|
|
171
|
-
### Adding New Metrics
|
|
172
|
-
|
|
173
|
-
1. Add interface to `lib/types.ts`
|
|
174
|
-
2. Create fetcher in `lib/*.ts`
|
|
175
|
-
3. Import in `index.ts`
|
|
176
|
-
4. Add to `buildSecondLine()`
|
|
177
|
-
|
|
178
|
-
### Modifying Display
|
|
70
|
+
```bash
|
|
71
|
+
echo '{ ... }' | bun run statusline:start
|
|
72
|
+
```
|
|
179
73
|
|
|
180
|
-
|
|
181
|
-
- Layout: Modify `buildFirstLine()` / `buildSecondLine()`
|
|
182
|
-
- Formatting: Add functions to `lib/formatters.ts`
|
|
74
|
+
## Error Handling
|
|
183
75
|
|
|
184
|
-
|
|
76
|
+
The statusline should fail softly:
|
|
185
77
|
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
-
|
|
78
|
+
- Missing transcript -> 0 tokens, 0%
|
|
79
|
+
- Git errors -> no-git fallback
|
|
80
|
+
- Missing config -> default config
|
|
81
|
+
- Invalid stdin -> concise error output
|
|
190
82
|
|
|
191
83
|
## Critical Requirements
|
|
192
84
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
-
|
|
196
|
-
- **ALWAYS** run `bun run config` after config changes to verify the interactive demo works correctly
|
|
197
|
-
- **REQUIRED**: Keep config file structure in sync with interactive prompts
|
|
198
|
-
|
|
199
|
-
### Runtime & Dependencies
|
|
200
|
-
|
|
201
|
-
- **ALWAYS** use Bun for all commands and runtime operations
|
|
202
|
-
- Use `bun run <script>` instead of `npm run` or `pnpm run`
|
|
203
|
-
- Use `bun install` for dependency management
|
|
204
|
-
- **AUTHORIZED LIBRARIES**: `@biomejs/biome` for linting/formatting, third-party libraries like `tiers` are permitted if needed
|
|
205
|
-
- **NEVER** add external npm packages without verification - prefer Bun APIs first
|
|
85
|
+
- Keep `statusline.config.json`, `defaults.json`, and `src/commands/interactive-config.ts` aligned.
|
|
86
|
+
- Use Bun for runtime and tests.
|
|
87
|
+
- Keep this free version lightweight: no spend database, no usage-limit API, no OAuth credential dependency.
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
# Claude Code Statusline
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Lightweight statusline for Claude Code with TypeScript + Bun.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- 📅 Weekly usage limit with configurable threshold
|
|
13
|
-
- 📈 Daily usage percentage tracking and statistics
|
|
7
|
+
- Git branch with staged/unstaged indicators
|
|
8
|
+
- Current working directory
|
|
9
|
+
- Model name and thinking status
|
|
10
|
+
- Session duration
|
|
11
|
+
- Context tokens and percentage
|
|
14
12
|
|
|
15
13
|
## Structure
|
|
16
14
|
|
|
@@ -20,8 +18,7 @@ src/
|
|
|
20
18
|
└── lib/
|
|
21
19
|
├── types.ts # TypeScript interfaces
|
|
22
20
|
├── git.ts # Git status
|
|
23
|
-
├── context.ts # Context calculation from transcript
|
|
24
|
-
├── usage-limits.ts # Claude API usage limits
|
|
21
|
+
├── context.ts # Context calculation from payload/transcript
|
|
25
22
|
└── formatters.ts # Formatting utilities
|
|
26
23
|
```
|
|
27
24
|
|
|
@@ -32,19 +29,10 @@ src/
|
|
|
32
29
|
bun install
|
|
33
30
|
|
|
34
31
|
# Run the statusline (needs stdin JSON)
|
|
35
|
-
echo '{ ... }' | bun run start
|
|
32
|
+
echo '{ ... }' | bun run statusline:start
|
|
36
33
|
|
|
37
|
-
#
|
|
38
|
-
bun run
|
|
39
|
-
|
|
40
|
-
# View this month's spending
|
|
41
|
-
bun run spend:month
|
|
42
|
-
|
|
43
|
-
# View usage statistics
|
|
44
|
-
bun run stats
|
|
45
|
-
|
|
46
|
-
# Interactive config demo
|
|
47
|
-
bun run demo
|
|
34
|
+
# Interactive config
|
|
35
|
+
bun run statusline:config
|
|
48
36
|
|
|
49
37
|
# Format code
|
|
50
38
|
bun run format
|
|
@@ -53,53 +41,12 @@ bun run format
|
|
|
53
41
|
bun run lint
|
|
54
42
|
```
|
|
55
43
|
|
|
56
|
-
##
|
|
57
|
-
|
|
58
|
-
### Spend Tracking
|
|
59
|
-
|
|
60
|
-
The statusline automatically saves session data to `data/spend.json`. You can view your spending with:
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
# Today's sessions and cost
|
|
64
|
-
bun run spend:today
|
|
65
|
-
|
|
66
|
-
# This month's sessions grouped by date
|
|
67
|
-
bun run spend:month
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Each session tracks:
|
|
71
|
-
- Cost (USD)
|
|
72
|
-
- Duration
|
|
73
|
-
- Lines added/removed
|
|
74
|
-
- Working directory
|
|
75
|
-
|
|
76
|
-
### Usage Statistics
|
|
77
|
-
|
|
78
|
-
Daily usage percentages are automatically tracked in `data/daily-usage.json`. Each 5-hour rate limit period is tracked separately using the `resets_at` timestamp as a unique key.
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
bun run stats
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
This shows:
|
|
85
|
-
- Average daily usage percentage across all tracked days
|
|
86
|
-
- Total days and total 5-hour periods tracked
|
|
87
|
-
- Recent 7-day usage history with visual bars
|
|
88
|
-
- Per-day statistics: average, max, min across all 5-hour periods
|
|
89
|
-
- Data is kept for 90 days
|
|
90
|
-
|
|
91
|
-
**How it works:**
|
|
92
|
-
- Each `resets_at` value represents a unique 5-hour rate limit period
|
|
93
|
-
- Multiple 5-hour periods can occur in a single day
|
|
94
|
-
- If the API is called multiple times during the same 5-hour period, only the latest value is kept
|
|
95
|
-
- Daily statistics show the average, maximum, and minimum usage across all periods in that day
|
|
96
|
-
|
|
97
|
-
## Interactive Demo
|
|
44
|
+
## Interactive Config
|
|
98
45
|
|
|
99
46
|
Explore all configuration options with a live preview:
|
|
100
47
|
|
|
101
48
|
```bash
|
|
102
|
-
bun run
|
|
49
|
+
bun run statusline:config
|
|
103
50
|
```
|
|
104
51
|
|
|
105
52
|
This opens an interactive menu where you can:
|
|
@@ -107,7 +54,7 @@ This opens an interactive menu where you can:
|
|
|
107
54
|
- See instant preview of how the statusline changes
|
|
108
55
|
- Navigate through all available settings
|
|
109
56
|
- Reset to defaults with `R`
|
|
110
|
-
- Explore session,
|
|
57
|
+
- Explore session, context, path, and git display options
|
|
111
58
|
|
|
112
59
|
**Controls:**
|
|
113
60
|
- `↑↓` or `j/k` - Navigate options
|
|
@@ -117,39 +64,16 @@ This opens an interactive menu where you can:
|
|
|
117
64
|
|
|
118
65
|
## Configuration
|
|
119
66
|
|
|
120
|
-
The statusline can be customized via `statusline.config.
|
|
121
|
-
|
|
122
|
-
### Weekly Usage Display
|
|
123
|
-
|
|
124
|
-
```typescript
|
|
125
|
-
weeklyUsage: {
|
|
126
|
-
enabled: boolean | "90%", // true: always show, false: never, "90%": show when 5-hour usage >= 90%
|
|
127
|
-
showTimeLeft: boolean,
|
|
128
|
-
percentage: {
|
|
129
|
-
enabled: boolean,
|
|
130
|
-
progressBar: {
|
|
131
|
-
enabled: boolean,
|
|
132
|
-
length: 5 | 10 | 15,
|
|
133
|
-
style: "filled" | "rectangle" | "braille",
|
|
134
|
-
color: "progressive" | "green" | "yellow" | "red"
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
**Default:** `enabled: "90%"` - Weekly limits appear when your 5-hour usage reaches 90%
|
|
141
|
-
|
|
142
|
-
Display format: `W: ⣿⣿⣧⣀⣀⣀⣀⣀⣀⣀ 45% (6d12h)`
|
|
67
|
+
The statusline can be customized via `statusline.config.json`.
|
|
143
68
|
|
|
144
69
|
### Other Configuration Options
|
|
145
70
|
|
|
146
|
-
- **Session display**:
|
|
147
|
-
- **Limits display**: Five-hour usage limits
|
|
71
|
+
- **Session display**: Duration, tokens, context percentage
|
|
148
72
|
- **Git display**: Branch, changes, staged/unstaged files
|
|
149
73
|
- **Path display**: Full, truncated, or basename modes
|
|
150
74
|
- **Progress bars**: Multiple styles and color schemes
|
|
151
75
|
|
|
152
|
-
See `statusline.config.
|
|
76
|
+
See `statusline.config.json` for all available options and defaults.
|
|
153
77
|
|
|
154
78
|
## Usage in Claude Code
|
|
155
79
|
|
|
@@ -159,7 +83,7 @@ Update your `~/.claude/settings.json`:
|
|
|
159
83
|
{
|
|
160
84
|
"statusLine": {
|
|
161
85
|
"type": "command",
|
|
162
|
-
"command": "bun
|
|
86
|
+
"command": "bun /Users/melvynx/.claude/scripts/statusline/src/index.ts",
|
|
163
87
|
"padding": 0
|
|
164
88
|
}
|
|
165
89
|
}
|
|
@@ -189,5 +113,5 @@ echo '{
|
|
|
189
113
|
"total_lines_added": 100,
|
|
190
114
|
"total_lines_removed": 50
|
|
191
115
|
}
|
|
192
|
-
}' | bun run start
|
|
116
|
+
}' | bun run statusline:start
|
|
193
117
|
```
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"features": {
|
|
3
|
-
"usageLimits":
|
|
4
|
-
"spendTracking":
|
|
3
|
+
"usageLimits": false,
|
|
4
|
+
"spendTracking": false
|
|
5
5
|
},
|
|
6
6
|
"oneLine": true,
|
|
7
7
|
"showSonnetModel": false,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"separator": "•",
|
|
18
18
|
"session": {
|
|
19
19
|
"infoSeparator": null,
|
|
20
|
-
"cost": { "enabled":
|
|
20
|
+
"cost": { "enabled": false, "format": "decimal1" },
|
|
21
21
|
"duration": { "enabled": true },
|
|
22
22
|
"tokens": { "enabled": true, "showMax": false, "showDecimals": false },
|
|
23
23
|
"percentage": {
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"overheadTokens": 0
|
|
41
41
|
},
|
|
42
42
|
"limits": {
|
|
43
|
-
"enabled":
|
|
44
|
-
"showTimeLeft":
|
|
45
|
-
"showPacingDelta":
|
|
43
|
+
"enabled": false,
|
|
44
|
+
"showTimeLeft": false,
|
|
45
|
+
"showPacingDelta": false,
|
|
46
46
|
"cost": { "enabled": false, "format": "decimal1" },
|
|
47
47
|
"percentage": {
|
|
48
48
|
"enabled": true,
|
|
@@ -57,9 +57,9 @@
|
|
|
57
57
|
}
|
|
58
58
|
},
|
|
59
59
|
"weeklyUsage": {
|
|
60
|
-
"enabled":
|
|
61
|
-
"showTimeLeft":
|
|
62
|
-
"showPacingDelta":
|
|
60
|
+
"enabled": false,
|
|
61
|
+
"showTimeLeft": false,
|
|
62
|
+
"showPacingDelta": false,
|
|
63
63
|
"cost": { "enabled": false, "format": "decimal1" },
|
|
64
64
|
"percentage": {
|
|
65
65
|
"enabled": true,
|
|
@@ -74,6 +74,9 @@
|
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
"dailySpend": {
|
|
77
|
-
"cost": { "enabled":
|
|
77
|
+
"cost": { "enabled": false, "format": "decimal1" }
|
|
78
|
+
},
|
|
79
|
+
"thinking": {
|
|
80
|
+
"showDisabledWarning": true
|
|
78
81
|
}
|
|
79
82
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/
|
|
2
|
-
{"parentUuid":"uuid-1","isSidechain":false,"userType":"external","cwd":"/
|
|
3
|
-
{"parentUuid":"uuid-2","isSidechain":false,"userType":"external","cwd":"/
|
|
4
|
-
{"parentUuid":"uuid-3","isSidechain":false,"userType":"external","cwd":"/
|
|
1
|
+
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/Users/melvynx/.claude/scripts/statusline","sessionId":"demo-session","version":"2.0.31","gitBranch":"main","timestamp":"2025-11-11T10:00:00.000Z","message":{"model":"claude-sonnet-4-5-20250929","id":"msg_01","type":"message","role":"user","content":[{"type":"text","text":"Hello"}],"usage":{"input_tokens":1000,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":100}},"uuid":"uuid-1"}
|
|
2
|
+
{"parentUuid":"uuid-1","isSidechain":false,"userType":"external","cwd":"/Users/melvynx/.claude/scripts/statusline","sessionId":"demo-session","version":"2.0.31","gitBranch":"main","timestamp":"2025-11-11T10:05:00.000Z","message":{"model":"claude-sonnet-4-5-20250929","id":"msg_02","type":"message","role":"assistant","content":[{"type":"text","text":"Hi there!"}],"usage":{"input_tokens":50000,"cache_creation_input_tokens":30000,"cache_read_input_tokens":0,"output_tokens":200}},"uuid":"uuid-2"}
|
|
3
|
+
{"parentUuid":"uuid-2","isSidechain":false,"userType":"external","cwd":"/Users/melvynx/.claude/scripts/statusline","sessionId":"demo-session","version":"2.0.31","gitBranch":"main","timestamp":"2025-11-11T10:10:00.000Z","message":{"model":"claude-sonnet-4-5-20250929","id":"msg_03","type":"message","role":"user","content":[{"type":"text","text":"Can you help me?"}],"usage":{"input_tokens":20000,"cache_creation_input_tokens":0,"cache_read_input_tokens":40000,"output_tokens":150}},"uuid":"uuid-3"}
|
|
4
|
+
{"parentUuid":"uuid-3","isSidechain":false,"userType":"external","cwd":"/Users/melvynx/.claude/scripts/statusline","sessionId":"demo-session","version":"2.0.31","gitBranch":"main","timestamp":"2025-11-11T10:15:00.000Z","message":{"model":"claude-sonnet-4-5-20250929","id":"msg_04","type":"message","role":"assistant","content":[{"type":"text","text":"Of course! What do you need?"}],"usage":{"input_tokens":30000,"cache_creation_input_tokens":0,"cache_read_input_tokens":45000,"output_tokens":300}},"uuid":"uuid-4"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"session_id": "06a7b019-03f8-4083-a9db-410d95cb01e6",
|
|
3
|
-
"transcript_path": "/
|
|
4
|
-
"cwd": "/
|
|
3
|
+
"transcript_path": "/Users/melvynx/.claude/scripts/statusline/fixtures/mock-transcript.jsonl",
|
|
4
|
+
"cwd": "/Users/melvynx/.claude",
|
|
5
5
|
"model": {
|
|
6
6
|
"id": "claude-sonnet-4-5-20250929",
|
|
7
7
|
"display_name": "Sonnet 4.5"
|
|
8
8
|
},
|
|
9
9
|
"workspace": {
|
|
10
|
-
"current_dir": "/
|
|
11
|
-
"project_dir": "/
|
|
10
|
+
"current_dir": "/Users/melvynx/.claude",
|
|
11
|
+
"project_dir": "/Users/melvynx/.claude"
|
|
12
12
|
},
|
|
13
13
|
"version": "2.0.68",
|
|
14
14
|
"output_style": {
|