@drewpayment/mink 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 +191 -8
- package/dist/cli.js +87465 -0
- package/package.json +7 -3
- package/skills/mink-note/SKILL.md +131 -0
- package/src/cli.ts +46 -0
- package/src/commands/init.ts +77 -4
- package/src/commands/note.ts +267 -0
- package/src/commands/session-start.ts +26 -0
- package/src/commands/session-stop.ts +148 -2
- package/src/commands/skill.ts +186 -0
- package/src/commands/wiki.ts +250 -0
- package/src/core/note-index.ts +262 -0
- package/src/core/note-linker.ts +161 -0
- package/src/core/note-writer.ts +203 -0
- package/src/core/vault-templates.ts +179 -0
- package/src/core/vault.ts +132 -0
- package/src/types/config.ts +7 -0
- package/src/types/note.ts +60 -0
package/README.md
CHANGED
|
@@ -20,6 +20,7 @@ Mink intercepts these lifecycle events and maintains structured state so the ass
|
|
|
20
20
|
- **Evaluate UI designs** with automated multi-viewport screenshots
|
|
21
21
|
- **Advise on frameworks** with a decision tree and migration guides
|
|
22
22
|
- **Build a cross-project wiki** that accumulates knowledge across all your projects
|
|
23
|
+
- **Capture notes from anywhere** with an AI-powered Claude Code skill that categorizes, tags, and links notes automatically
|
|
23
24
|
|
|
24
25
|
## How It Works
|
|
25
26
|
|
|
@@ -59,16 +60,25 @@ All state lives in `~/.mink/` -- nothing is stored in your project repository.
|
|
|
59
60
|
- **Built-in Tasks** — File index rescan, action log consolidation, waste detection, learning memory reflection, and project suggestions — all on configurable schedules
|
|
60
61
|
|
|
61
62
|
### Interfaces
|
|
62
|
-
- **CLI** —
|
|
63
|
+
- **CLI** — 25+ commands covering lifecycle hooks, state management, notes/wiki, scheduling, configuration, backup/restore, and more
|
|
63
64
|
- **Real-time Dashboard** — Web UI with 10 panels, SSE live updates, light/dark themes, virtual scrolling, and interactive charts
|
|
64
65
|
|
|
66
|
+
### Notes & Wiki
|
|
67
|
+
- **Wiki Vault** — Obsidian-compatible markdown vault that accumulates knowledge across all projects
|
|
68
|
+
- **Note Capture** — `mink note` CLI captures notes from any directory into the vault
|
|
69
|
+
- **Claude Code Skill** — `/mink:note` skill uses Claude as the AI brain for intelligent categorization, tagging, and wikilink insertion
|
|
70
|
+
- **Daily Notes** — `mink note --daily` creates or appends to daily journal entries
|
|
71
|
+
- **Vault Index** — Token-efficient file index for the vault, with search and tag aggregation
|
|
72
|
+
- **Git Backup** — Auto-commit and push vault changes on session end
|
|
73
|
+
- **Templates** — 6 built-in templates (quick-capture, daily, meeting, project, area, person)
|
|
74
|
+
|
|
65
75
|
### Advanced
|
|
66
76
|
- **Design Evaluation** — Automated multi-viewport screenshot capture with server and route detection (uses Puppeteer)
|
|
67
77
|
- **Framework Advisor** — Decision tree, framework catalog, comparison matrix, and migration prompts for UI framework selection
|
|
68
78
|
|
|
69
79
|
## Current Status
|
|
70
80
|
|
|
71
|
-
Specs 1–
|
|
81
|
+
Specs 1–15 are fully implemented and tested. The test plan spec (16) is designed and documented in `specs/`.
|
|
72
82
|
|
|
73
83
|
| Domain | Specs | Status |
|
|
74
84
|
|--------|-------|--------|
|
|
@@ -79,7 +89,7 @@ Specs 1–14 are fully implemented and tested. Remaining specs (wiki, test plan)
|
|
|
79
89
|
| Automation | Background Scheduler | Implemented |
|
|
80
90
|
| Interfaces | CLI Commands, Dashboard | Implemented |
|
|
81
91
|
| Advanced | Design Evaluation, Framework Advisor | Implemented |
|
|
82
|
-
| Wiki | Cross-Project Wiki |
|
|
92
|
+
| Wiki | Cross-Project Wiki & Notes | Implemented |
|
|
83
93
|
| Quality | Test Plan | Designed |
|
|
84
94
|
|
|
85
95
|
## Installation
|
|
@@ -93,10 +103,10 @@ Specs 1–14 are fully implemented and tested. Remaining specs (wiki, test plan)
|
|
|
93
103
|
|
|
94
104
|
```bash
|
|
95
105
|
# With Bun (recommended)
|
|
96
|
-
bun add -g mink
|
|
106
|
+
bun add -g @drewpayment/mink
|
|
97
107
|
|
|
98
108
|
# With npm
|
|
99
|
-
npm install -g mink
|
|
109
|
+
npm install -g @drewpayment/mink
|
|
100
110
|
```
|
|
101
111
|
|
|
102
112
|
### Initialize in a project
|
|
@@ -133,6 +143,159 @@ cat ~/.mink/projects/*/session.json
|
|
|
133
143
|
|
|
134
144
|
You should see a fresh session state with a unique ID, timestamp, and zeroed counters.
|
|
135
145
|
|
|
146
|
+
## Notes & Wiki
|
|
147
|
+
|
|
148
|
+
Mink includes a notes and wiki system that builds a portable, Obsidian-compatible knowledge base across all your projects. Notes can be captured from any directory and are automatically organized into a structured vault.
|
|
149
|
+
|
|
150
|
+
### Set up the vault
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Create a new vault (default: ~/.mink/wiki/)
|
|
154
|
+
mink wiki init
|
|
155
|
+
|
|
156
|
+
# Or point to an existing Obsidian vault / notes directory
|
|
157
|
+
mink wiki init ~/dev/notes
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
This creates the vault structure, seeds templates, and builds a file index. If you point to an existing directory, Mink scans and indexes all markdown files without modifying them.
|
|
161
|
+
|
|
162
|
+
### Capture notes
|
|
163
|
+
|
|
164
|
+
The `mink note` command captures notes from any directory into your vault:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# Quick capture — lands in inbox/
|
|
168
|
+
mink note "API rate limiting needs investigation"
|
|
169
|
+
|
|
170
|
+
# Structured note with title and body
|
|
171
|
+
mink note --title "JWT Cookie Pattern" --body "Use httpOnly cookies for token storage..."
|
|
172
|
+
|
|
173
|
+
# Link to the current Mink project
|
|
174
|
+
mink note --project my-api "Retry logic needs exponential backoff"
|
|
175
|
+
|
|
176
|
+
# Daily journal
|
|
177
|
+
mink note --daily "Had a breakthrough on the caching layer"
|
|
178
|
+
mink note --daily # Create today's daily note (empty template)
|
|
179
|
+
|
|
180
|
+
# From a template
|
|
181
|
+
mink note --template meeting --title "Sprint Planning 2026-04-12"
|
|
182
|
+
|
|
183
|
+
# With explicit category and tags
|
|
184
|
+
mink note --category resources --tags "auth,security" --title "OAuth2 Flow Reference"
|
|
185
|
+
|
|
186
|
+
# Ingest an existing file into the vault
|
|
187
|
+
mink note --file ./scratch-notes.md --category resources
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Use the Claude Code skill
|
|
191
|
+
|
|
192
|
+
The `/mink:note` skill is the recommended way to capture notes. It uses Claude as the AI brain to automatically determine category, tags, title, and wikilinks.
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Install the skill globally
|
|
196
|
+
mink skill install
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Then in any Claude Code session:
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
/mink:note I had a meeting with Sarah about the CMS migration timeline.
|
|
203
|
+
She wants to target Q3 for the cutover.
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Claude will analyze the content, check existing notes for related topics and people, and run `mink note` with the right flags — placing the note in the correct category with tags and `[[wikilinks]]` to related notes.
|
|
207
|
+
|
|
208
|
+
### Browse and search
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# List recent notes
|
|
212
|
+
mink note list --recent 10
|
|
213
|
+
|
|
214
|
+
# Filter by category or tag
|
|
215
|
+
mink note list --category projects
|
|
216
|
+
mink note list --tag meeting
|
|
217
|
+
|
|
218
|
+
# Full-text search
|
|
219
|
+
mink note search "authentication"
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Vault structure
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
vault-root/
|
|
226
|
+
_index.md # Master index (auto-maintained)
|
|
227
|
+
inbox/ # Quick captures land here
|
|
228
|
+
projects/ # Project-linked notes + Mink-generated wiki pages
|
|
229
|
+
my-api/
|
|
230
|
+
overview.md # Auto-created on mink init
|
|
231
|
+
sessions/ # Daily session summaries
|
|
232
|
+
*.md # Your project notes
|
|
233
|
+
areas/ # Ongoing responsibilities
|
|
234
|
+
daily/ # Daily notes (areas/daily/2026-04-12.md)
|
|
235
|
+
resources/ # Reference material
|
|
236
|
+
archives/ # Completed/inactive
|
|
237
|
+
templates/ # Note templates
|
|
238
|
+
patterns/ # Cross-project patterns
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Obsidian compatibility
|
|
242
|
+
|
|
243
|
+
The vault is a standard markdown directory fully compatible with Obsidian:
|
|
244
|
+
|
|
245
|
+
- **Wikilinks** — `[[Note Title]]` syntax for internal links
|
|
246
|
+
- **YAML frontmatter** — `created`, `updated`, `tags`, `category` fields
|
|
247
|
+
- **Graph view** — Wikilinks render as connections in Obsidian's knowledge graph
|
|
248
|
+
- **Templates** — Compatible with Obsidian's Templater plugin (`{{variable}}` syntax)
|
|
249
|
+
|
|
250
|
+
Open the vault directory as an Obsidian vault and everything works out of the box.
|
|
251
|
+
|
|
252
|
+
### Git backup
|
|
253
|
+
|
|
254
|
+
Enable automatic git backup to sync your vault across machines:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# Enable git backup
|
|
258
|
+
mink config wiki.git-backup true
|
|
259
|
+
|
|
260
|
+
# Set the remote (default: origin)
|
|
261
|
+
mink config wiki.git-remote origin
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
When enabled, Mink auto-commits and pushes vault changes at the end of each session. Pushes are best-effort with a 10-second timeout — if the push fails, the local commit is preserved and will be included in the next push.
|
|
265
|
+
|
|
266
|
+
### Hook integration
|
|
267
|
+
|
|
268
|
+
When the wiki is enabled, Mink hooks automatically:
|
|
269
|
+
|
|
270
|
+
- **On session start** — Report inbox count if notes need categorization
|
|
271
|
+
- **On session end** — Write a session summary to `projects/{slug}/sessions/{date}.md`
|
|
272
|
+
- **On `mink init`** — Create a project overview page in the vault
|
|
273
|
+
|
|
274
|
+
### Configuration
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
# View all wiki/notes settings
|
|
278
|
+
mink config
|
|
279
|
+
|
|
280
|
+
# Set vault location
|
|
281
|
+
mink config wiki.path ~/my-notes
|
|
282
|
+
|
|
283
|
+
# Disable the wiki feature
|
|
284
|
+
mink config wiki.enabled false
|
|
285
|
+
|
|
286
|
+
# Set default category for CLI captures (default: inbox)
|
|
287
|
+
mink config notes.default-category inbox
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
| Setting | Default | Env Override | Description |
|
|
291
|
+
|---------|---------|-------------|-------------|
|
|
292
|
+
| `wiki.path` | `~/.mink/wiki/` | `MINK_WIKI_PATH` | Vault directory |
|
|
293
|
+
| `wiki.enabled` | `true` | `MINK_WIKI_ENABLED` | Toggle wiki feature |
|
|
294
|
+
| `wiki.sync-mode` | `immediate` | `MINK_WIKI_SYNC_MODE` | Update timing |
|
|
295
|
+
| `wiki.git-backup` | `false` | `MINK_WIKI_GIT_BACKUP` | Auto-commit and push |
|
|
296
|
+
| `wiki.git-remote` | `origin` | `MINK_WIKI_GIT_REMOTE` | Git remote for push |
|
|
297
|
+
| `notes.default-category` | `inbox` | `MINK_NOTES_DEFAULT_CATEGORY` | Default note category |
|
|
298
|
+
|
|
136
299
|
## Architecture
|
|
137
300
|
|
|
138
301
|
### State Directory
|
|
@@ -207,7 +370,7 @@ bun test tests/unit/session.test.ts
|
|
|
207
370
|
```
|
|
208
371
|
mink/
|
|
209
372
|
├── src/
|
|
210
|
-
│ ├── cli.ts # Entry point, command routing (
|
|
373
|
+
│ ├── cli.ts # Entry point, command routing (25+ commands)
|
|
211
374
|
│ ├── commands/ # CLI command implementations
|
|
212
375
|
│ │ ├── init.ts # mink init — runtime detection, hook wiring
|
|
213
376
|
│ │ ├── session-start.ts # Hook: create fresh session state
|
|
@@ -216,6 +379,9 @@ mink/
|
|
|
216
379
|
│ │ ├── post-read.ts # Hook: post-read tracking
|
|
217
380
|
│ │ ├── pre-write.ts # Hook: write enforcement
|
|
218
381
|
│ │ ├── post-write.ts # Hook: post-write tracking
|
|
382
|
+
│ │ ├── wiki.ts # Wiki vault management (init, status, rebuild, organize)
|
|
383
|
+
│ │ ├── note.ts # Note capture, list, and search
|
|
384
|
+
│ │ ├── skill.ts # Claude Code skill installer
|
|
219
385
|
│ │ ├── status.ts # Project health display
|
|
220
386
|
│ │ ├── scan.ts # Force full file index rescan
|
|
221
387
|
│ │ ├── config.ts # Global configuration management
|
|
@@ -250,15 +416,22 @@ mink/
|
|
|
250
416
|
│ │ ├── dashboard-api.ts # Dashboard REST API + SSE
|
|
251
417
|
│ │ ├── design-eval/ # Screenshot capture, route/server detection
|
|
252
418
|
│ │ ├── framework-advisor/ # Catalog, decision tree, migration prompts
|
|
419
|
+
│ │ ├── vault.ts # Wiki vault path resolution and structure
|
|
420
|
+
│ │ ├── vault-templates.ts # Note template management
|
|
421
|
+
│ │ ├── note-writer.ts # Note creation, frontmatter, daily notes
|
|
422
|
+
│ │ ├── note-linker.ts # Wikilink extraction, insertion, backlinks
|
|
423
|
+
│ │ ├── note-index.ts # Vault file index with search
|
|
253
424
|
│ │ └── ... # Global config, backup, reflection, etc.
|
|
254
425
|
│ ├── dashboard/ # Embedded dashboard UI (HTML/CSS/JS generation)
|
|
255
426
|
│ │ ├── get-dashboard-html.ts # Main HTML assembly
|
|
256
427
|
│ │ ├── panel-*.ts # 10 panel implementations
|
|
257
428
|
│ │ ├── css-*.ts # Base styles and themes
|
|
258
429
|
│ │ └── js-*.ts # Charts, SSE, virtual scroll, search
|
|
430
|
+
│ ├── skills/ # Claude Code skill files
|
|
431
|
+
│ │ └── mink-note.md # /mink:note skill for intelligent note capture
|
|
259
432
|
│ └── types/ # TypeScript interfaces
|
|
260
433
|
├── tests/
|
|
261
|
-
│ ├── unit/ #
|
|
434
|
+
│ ├── unit/ # 40+ unit test files
|
|
262
435
|
│ └── integration/ # 15+ integration test files
|
|
263
436
|
├── specs/ # Feature specifications (technology-agnostic)
|
|
264
437
|
└── docs/ # Design docs and implementation plans
|
|
@@ -310,6 +483,16 @@ bun src/cli.ts status
|
|
|
310
483
|
|
|
311
484
|
# Run a waste detection scan
|
|
312
485
|
bun src/cli.ts detect-waste
|
|
486
|
+
|
|
487
|
+
# Set up the wiki vault and capture notes
|
|
488
|
+
bun src/cli.ts wiki init
|
|
489
|
+
bun src/cli.ts note "Testing the notes feature"
|
|
490
|
+
bun src/cli.ts note --daily "Today I worked on mink"
|
|
491
|
+
bun src/cli.ts note list --recent 5
|
|
492
|
+
bun src/cli.ts note search "testing"
|
|
493
|
+
|
|
494
|
+
# Install the Claude Code skill
|
|
495
|
+
bun src/cli.ts skill install
|
|
313
496
|
```
|
|
314
497
|
|
|
315
498
|
### Adding a new spec implementation
|
|
@@ -339,7 +522,7 @@ Each spec follows this workflow:
|
|
|
339
522
|
| 12 | [Dashboard](./specs/12-dashboard.md) | Interface | Implemented |
|
|
340
523
|
| 13 | [Design Evaluation](./specs/13-design-evaluation.md) | Advanced | Implemented |
|
|
341
524
|
| 14 | [Framework Advisor](./specs/14-framework-advisor.md) | Advanced | Implemented |
|
|
342
|
-
| 15 | [Cross-Project Wiki](./specs/15-cross-project-wiki.md) | Wiki |
|
|
525
|
+
| 15 | [Cross-Project Wiki](./specs/15-cross-project-wiki.md) | Wiki | Implemented |
|
|
343
526
|
| 16 | [Test Plan](./specs/16-test-plan.md) | Quality | Designed |
|
|
344
527
|
|
|
345
528
|
## License
|