@forwardimpact/basecamp 2.9.3 → 2.9.4
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/package.json +1 -1
- package/README.md +0 -229
package/package.json
CHANGED
package/README.md
DELETED
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
# @forwardimpact/basecamp
|
|
2
|
-
|
|
3
|
-
A personal knowledge system that runs as scheduled Claude Code tasks. No server,
|
|
4
|
-
no database — just plain files, markdown, and the `claude` CLI. Packaged as a
|
|
5
|
-
native macOS app bundle (`Basecamp.app`) with TCC-compliant process management.
|
|
6
|
-
|
|
7
|
-
Part of the [Forward Impact](https://www.forwardimpact.team) monorepo.
|
|
8
|
-
|
|
9
|
-
## Architecture
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
Basecamp.app/ # macOS app bundle
|
|
13
|
-
└── Contents/
|
|
14
|
-
├── Info.plist # Bundle metadata (LSUIElement)
|
|
15
|
-
├── MacOS/
|
|
16
|
-
│ ├── Basecamp # Swift launcher (TCC responsible)
|
|
17
|
-
│ └── fit-basecamp # Deno scheduler (child process)
|
|
18
|
-
└── Resources/
|
|
19
|
-
├── config/scheduler.json # Default config
|
|
20
|
-
└── template/ # KB template
|
|
21
|
-
|
|
22
|
-
~/.fit/basecamp/ # Scheduler home (user config)
|
|
23
|
-
├── scheduler.json # Task definitions
|
|
24
|
-
├── state.json # Task run state
|
|
25
|
-
├── basecamp.sock # IPC socket
|
|
26
|
-
└── logs/ # Scheduler logs
|
|
27
|
-
|
|
28
|
-
~/Documents/Personal/ # Default personal knowledge base
|
|
29
|
-
├── CLAUDE.md # Claude Code instructions for this KB
|
|
30
|
-
├── knowledge/ # The knowledge graph
|
|
31
|
-
│ ├── People/
|
|
32
|
-
│ ├── Organizations/
|
|
33
|
-
│ ├── Projects/
|
|
34
|
-
│ └── Topics/
|
|
35
|
-
├── .claude/skills/ # Claude Code skill files
|
|
36
|
-
└── drafts/ # Email drafts
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Process Tree
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
Basecamp (Swift launcher, CFBundleExecutable, TCC responsible)
|
|
43
|
-
├── fit-basecamp --daemon (Deno scheduler, spawned via posix_spawn)
|
|
44
|
-
│ └── claude --print ... (spawned via posix_spawn FFI)
|
|
45
|
-
└── [status menu UI] (AppKit menu bar, in-process)
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
The Swift launcher is the main executable and TCC responsible process. It spawns
|
|
49
|
-
the Deno scheduler via `posix_spawn` so child processes inherit TCC attributes.
|
|
50
|
-
Users grant Calendar, Contacts, and other permissions once to Basecamp.app.
|
|
51
|
-
|
|
52
|
-
## Install from Package
|
|
53
|
-
|
|
54
|
-
1. Double-click `fit-basecamp-<version>.pkg`
|
|
55
|
-
2. Follow the installer prompts
|
|
56
|
-
|
|
57
|
-
The installer places `Basecamp.app` in `/Applications/` and initializes
|
|
58
|
-
`~/Documents/Personal/` as the default knowledge base.
|
|
59
|
-
|
|
60
|
-
After installing, open Basecamp from `/Applications/`. It runs as a menu bar app
|
|
61
|
-
— use "Quit Basecamp" from the status menu to stop it.
|
|
62
|
-
|
|
63
|
-
To uninstall, run `just uninstall` from the source tree.
|
|
64
|
-
|
|
65
|
-
## Install from Source
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
cd products/basecamp
|
|
69
|
-
|
|
70
|
-
# Run the scheduler in dev mode
|
|
71
|
-
just daemon
|
|
72
|
-
|
|
73
|
-
# Or initialize a new KB
|
|
74
|
-
just init ~/Documents/Personal
|
|
75
|
-
|
|
76
|
-
# Configure your identity
|
|
77
|
-
vi ~/Documents/Personal/USER.md
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Building
|
|
81
|
-
|
|
82
|
-
Requires [Deno](https://deno.com) >= 2.x and Xcode Command Line Tools.
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
# Build scheduler + launcher binaries
|
|
86
|
-
just build
|
|
87
|
-
|
|
88
|
-
# Build + assemble Basecamp.app
|
|
89
|
-
just build-app
|
|
90
|
-
|
|
91
|
-
# Build + assemble + .pkg installer
|
|
92
|
-
just pkg
|
|
93
|
-
|
|
94
|
-
# Or via npm:
|
|
95
|
-
npm run build # binaries only
|
|
96
|
-
npm run build:app # + Basecamp.app
|
|
97
|
-
npm run build:pkg # + .pkg installer
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Output goes to `dist/`:
|
|
101
|
-
|
|
102
|
-
```
|
|
103
|
-
dist/
|
|
104
|
-
├── fit-basecamp # Deno scheduler binary
|
|
105
|
-
├── Basecamp # Swift launcher binary
|
|
106
|
-
└── Basecamp.app/ # Assembled app bundle
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## Multiple Knowledge Bases
|
|
110
|
-
|
|
111
|
-
The scheduler can run tasks across multiple knowledge bases. Each KB is an
|
|
112
|
-
independent directory with its own CLAUDE.md, skills, and knowledge graph.
|
|
113
|
-
|
|
114
|
-
### Adding a new KB
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
# Initialize a new knowledge base
|
|
118
|
-
deno run --allow-all src/basecamp.js --init ~/Documents/Team
|
|
119
|
-
|
|
120
|
-
# Edit the scheduler config to register it
|
|
121
|
-
vi ~/.fit/basecamp/scheduler.json
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### Scheduler config format
|
|
125
|
-
|
|
126
|
-
`~/.fit/basecamp/scheduler.json`:
|
|
127
|
-
|
|
128
|
-
```json
|
|
129
|
-
{
|
|
130
|
-
"tasks": {
|
|
131
|
-
"sync-personal-mail": {
|
|
132
|
-
"kb": "~/Documents/Personal",
|
|
133
|
-
"schedule": { "type": "interval", "minutes": 5 },
|
|
134
|
-
"enabled": true,
|
|
135
|
-
"skill": "sync-apple-mail",
|
|
136
|
-
"prompt": "Sync Apple Mail."
|
|
137
|
-
},
|
|
138
|
-
"sync-team-calendar": {
|
|
139
|
-
"kb": "~/Documents/Team",
|
|
140
|
-
"schedule": { "type": "interval", "minutes": 10 },
|
|
141
|
-
"enabled": true,
|
|
142
|
-
"skill": "sync-apple-calendar",
|
|
143
|
-
"prompt": "Sync Apple Calendar."
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### Task fields
|
|
150
|
-
|
|
151
|
-
| Field | Required | Description |
|
|
152
|
-
| ---------- | -------- | --------------------------------------------------------------- |
|
|
153
|
-
| `kb` | yes | Path to the knowledge base directory (supports `~`) |
|
|
154
|
-
| `schedule` | yes | When to run (`interval`, `cron`, or `once`) |
|
|
155
|
-
| `prompt` | yes | The prompt sent to Claude |
|
|
156
|
-
| `enabled` | no | Set to `false` to disable. Default: `true` |
|
|
157
|
-
| `agent` | no | Claude sub-agent name (passed as `--agent`) |
|
|
158
|
-
| `skill` | no | Skill name (matches `.claude/skills/<name>/SKILL.md` in the KB) |
|
|
159
|
-
|
|
160
|
-
### Schedule types
|
|
161
|
-
|
|
162
|
-
```json
|
|
163
|
-
{ "type": "interval", "minutes": 5 }
|
|
164
|
-
{ "type": "cron", "expression": "0 8 * * *" }
|
|
165
|
-
{ "type": "once", "runAt": "2025-02-12T10:00:00Z" }
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
## Updating
|
|
169
|
-
|
|
170
|
-
When you upgrade Basecamp (install a new `.pkg`), the installer automatically
|
|
171
|
-
runs `--update` on all configured knowledge bases. This pushes the latest
|
|
172
|
-
`CLAUDE.md`, skills, and agents into each KB without touching your data.
|
|
173
|
-
|
|
174
|
-
You can also run it manually at any time:
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
# Update all configured knowledge bases
|
|
178
|
-
/Applications/Basecamp.app/Contents/MacOS/fit-basecamp --update
|
|
179
|
-
|
|
180
|
-
# Update a specific knowledge base
|
|
181
|
-
/Applications/Basecamp.app/Contents/MacOS/fit-basecamp --update ~/Documents/Personal
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
The update merges `.claude/settings.json` non-destructively — new entries are
|
|
185
|
-
added but your existing permissions are preserved.
|
|
186
|
-
|
|
187
|
-
## CLI Reference
|
|
188
|
-
|
|
189
|
-
```
|
|
190
|
-
fit-basecamp Run due tasks once and exit
|
|
191
|
-
fit-basecamp --daemon Run continuously (poll every 60s)
|
|
192
|
-
fit-basecamp --run <task> Run a specific task immediately
|
|
193
|
-
fit-basecamp --init <path> Initialize a new knowledge base
|
|
194
|
-
fit-basecamp --update [path] Update KB skills, agents, and CLAUDE.md
|
|
195
|
-
fit-basecamp --status Show knowledge bases and task status
|
|
196
|
-
fit-basecamp --validate Validate agents and skills exist
|
|
197
|
-
fit-basecamp --help Show this help
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
When running from source, use `deno run --allow-all src/basecamp.js` or
|
|
201
|
-
`just run` instead of `fit-basecamp`.
|
|
202
|
-
|
|
203
|
-
## Skills
|
|
204
|
-
|
|
205
|
-
Skills are Claude Code-native `SKILL.md` files that are auto-discovered from
|
|
206
|
-
`.claude/skills/<name>/SKILL.md` inside each knowledge base. The default KB
|
|
207
|
-
ships with these skills:
|
|
208
|
-
|
|
209
|
-
| Skill | Directory | Purpose |
|
|
210
|
-
| ---------------------- | ---------------------- | ---------------------------------------------- |
|
|
211
|
-
| Sync Apple Mail | `sync-apple-mail` | Sync Apple Mail threads via SQLite |
|
|
212
|
-
| Sync Apple Calendar | `sync-apple-calendar` | Sync Apple Calendar events via SQLite |
|
|
213
|
-
| Extract Entities | `extract-entities` | Process synced data into knowledge graph notes |
|
|
214
|
-
| Draft Emails | `draft-emails` | Draft email responses using knowledge context |
|
|
215
|
-
| Meeting Prep | `meeting-prep` | Prepare briefings for upcoming meetings |
|
|
216
|
-
| Create Presentations | `create-presentations` | Create slide decks as PDF |
|
|
217
|
-
| Document Collaboration | `doc-collab` | Document creation and collaboration |
|
|
218
|
-
| Organize Files | `organize-files` | File organization and cleanup |
|
|
219
|
-
|
|
220
|
-
## Requirements
|
|
221
|
-
|
|
222
|
-
- Claude CLI (`claude`) installed and authenticated
|
|
223
|
-
- macOS 13+ (Ventura or later)
|
|
224
|
-
- Xcode Command Line Tools (for building the Swift launcher)
|
|
225
|
-
- Deno >= 2.x (for building the standalone binary)
|
|
226
|
-
|
|
227
|
-
## License
|
|
228
|
-
|
|
229
|
-
Apache-2.0
|