@orderful/droid 0.4.0 → 0.5.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.
Files changed (41) hide show
  1. package/.claude/CLAUDE.md +4 -4
  2. package/.github/workflows/changeset-check.yml +40 -11
  3. package/.github/workflows/release.yml +0 -1
  4. package/CHANGELOG.md +33 -0
  5. package/bun.lock +2 -182
  6. package/dist/commands/tui.d.ts.map +1 -1
  7. package/dist/commands/tui.js +55 -16
  8. package/dist/commands/tui.js.map +1 -1
  9. package/dist/lib/skills.d.ts +38 -0
  10. package/dist/lib/skills.d.ts.map +1 -1
  11. package/dist/lib/skills.js +130 -4
  12. package/dist/lib/skills.js.map +1 -1
  13. package/dist/skills/comments/SKILL.md +28 -5
  14. package/dist/skills/comments/SKILL.yaml +6 -2
  15. package/dist/skills/comments/commands/comments.md +15 -34
  16. package/dist/skills/project/SKILL.md +93 -0
  17. package/dist/skills/project/SKILL.yaml +35 -0
  18. package/dist/skills/project/commands/README.md +26 -0
  19. package/dist/skills/project/commands/project.md +39 -0
  20. package/dist/skills/project/references/changelog.md +70 -0
  21. package/dist/skills/project/references/creating.md +58 -0
  22. package/dist/skills/project/references/loading.md +40 -0
  23. package/dist/skills/project/references/templates.md +124 -0
  24. package/dist/skills/project/references/updating.md +64 -0
  25. package/dist/skills/project/references/versioning.md +36 -0
  26. package/package.json +1 -3
  27. package/src/commands/tui.tsx +65 -19
  28. package/src/lib/skills.ts +160 -4
  29. package/src/skills/comments/SKILL.md +28 -5
  30. package/src/skills/comments/SKILL.yaml +6 -2
  31. package/src/skills/comments/commands/comments.md +15 -34
  32. package/src/skills/project/SKILL.md +93 -0
  33. package/src/skills/project/SKILL.yaml +35 -0
  34. package/src/skills/project/commands/README.md +26 -0
  35. package/src/skills/project/commands/project.md +39 -0
  36. package/src/skills/project/references/changelog.md +70 -0
  37. package/src/skills/project/references/creating.md +58 -0
  38. package/src/skills/project/references/loading.md +40 -0
  39. package/src/skills/project/references/templates.md +124 -0
  40. package/src/skills/project/references/updating.md +64 -0
  41. package/src/skills/project/references/versioning.md +36 -0
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: project
3
+ description: >-
4
+ Manage project context files for persistent AI memory across sessions.
5
+ Load project context before working (/project {name}), update with
6
+ new learnings (/project update), or create new projects (/project create).
7
+ Use when working on multi-session features, refactors, or any work that
8
+ benefits from accumulated context.
9
+ globs:
10
+ - "**/PROJECT.md"
11
+ alwaysApply: false
12
+ ---
13
+
14
+ # Project Skill
15
+
16
+ Persistent project context that survives across sessions. Projects are folders containing `PROJECT.md` + `CHANGELOG.md`.
17
+
18
+ ## Why Projects?
19
+
20
+ Chat history disappears. Projects persist.
21
+
22
+ - **Context accumulates** - Each session starts with full project knowledge
23
+ - **Decisions are captured** - No re-explaining why something was built a certain way
24
+ - **Progress is tracked** - Semantic versioning + changelog show evolution
25
+
26
+ ## When NOT to Use
27
+
28
+ - One-off tasks that don't need persistence
29
+ - Simple questions or lookups
30
+ - Tasks with sufficient context already in conversation
31
+ - Quick fixes that don't warrant project tracking
32
+
33
+ ## Configuration
34
+
35
+ Check `~/.droid/skills/project/overrides.yaml` for user settings:
36
+
37
+ | Setting | Default | Description |
38
+ |---------|---------|-------------|
39
+ | `projects_dir` | `~/{ai_tool}/projects` | Where projects are stored (varies by AI tool) |
40
+ | `preset` | `markdown` | Output format: `markdown` or `obsidian` |
41
+
42
+ Default `projects_dir` by AI tool:
43
+ - **claude-code**: `~/.claude/projects`
44
+ - **opencode**: `~/.opencode/projects`
45
+
46
+ ## Commands
47
+
48
+ | Command | Action |
49
+ |---------|--------|
50
+ | `/project` | List and select a project |
51
+ | `/project {keywords}` | Fuzzy-match and load |
52
+ | `/project create {name}` | Create new project |
53
+ | `/project update` | Update from conversation context |
54
+
55
+ ## Loading a Project
56
+
57
+ **Trigger:** `/project {keywords}` or user asks to load/open a project
58
+
59
+ **TLDR:** Fuzzy-match keywords against project folders, read PROJECT.md, summarize context.
60
+
61
+ Full procedure: `references/loading.md`
62
+
63
+ ## Updating a Project
64
+
65
+ **Trigger:** `/project update` or user asks to capture/save learnings
66
+
67
+ **TLDR:** Analyze conversation for decisions/patterns/progress, propose changes, bump version, update changelog.
68
+
69
+ Full procedure: `references/updating.md`
70
+ Version rules: `references/versioning.md`
71
+ Changelog format: `references/changelog.md`
72
+
73
+ ## Creating a Project
74
+
75
+ **Trigger:** `/project create {name?}` or user asks to start a new project
76
+
77
+ **TLDR:** Create folder in `projects_dir`, generate PROJECT.md + CHANGELOG.md from templates.
78
+
79
+ Full procedure: `references/creating.md`
80
+ Templates: `references/templates.md`
81
+
82
+ ## The Flywheel
83
+
84
+ Projects work best in a cycle:
85
+
86
+ 1. **Load** - `/project {name}` gives Claude full context
87
+ 2. **Research/Plan** - Explore the problem, consider approaches
88
+ 3. **Document** - Capture decisions in PROJECT.md before implementing
89
+ 4. **Implement** - Build with full context of why decisions were made
90
+ 5. **Capture** - `/project update` saves new learnings
91
+ 6. **Repeat** - Next session starts with accumulated knowledge
92
+
93
+ Each cycle starts further ahead than the last.
@@ -0,0 +1,35 @@
1
+ name: project
2
+ description: >-
3
+ Manage project context files for persistent AI memory across sessions.
4
+ Load project context before working (/project {name}), update with
5
+ new learnings (/project update), or create new projects (/project create).
6
+ Use when working on multi-session features, refactors, or any work that
7
+ benefits from accumulated context.
8
+ version: 0.1.0
9
+ status: beta
10
+ dependencies: []
11
+ provides_output: false
12
+ config_schema:
13
+ projects_dir:
14
+ type: string
15
+ description: Path to projects directory (default varies by AI tool)
16
+ preset:
17
+ type: string
18
+ description: Output format for templates
19
+ default: "markdown"
20
+ enum:
21
+ - markdown
22
+ - obsidian
23
+ examples:
24
+ - title: "Load project by name"
25
+ code: |
26
+ /project transaction templates
27
+ # Fuzzy matches "transaction-templates" folder
28
+ - title: "Update after work session"
29
+ code: |
30
+ /project update
31
+ # Analyzes conversation, proposes PROJECT.md updates
32
+ - title: "Create new project"
33
+ code: |
34
+ /project create billing-refactor
35
+ # Creates folder with PROJECT.md and CHANGELOG.md
@@ -0,0 +1,26 @@
1
+ # Project Commands
2
+
3
+ Commands for managing project context files.
4
+
5
+ ## Available Commands
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `/project` | Main command - load, update, or create projects |
10
+
11
+ ## How It Works
12
+
13
+ The `/project` command handles multiple operations via subcommands:
14
+
15
+ - `/project` or `/project {keywords}` - Load a project
16
+ - `/project load {name}` - Explicit load
17
+ - `/project update {name?}` - Update project from conversation
18
+ - `/project create {name?}` - Create new project
19
+
20
+ ## Adding Commands
21
+
22
+ If you want to add additional project-related commands (like `/project stats` or `/project archive`), create a new `.md` file in this directory. The command will be namespaced under the skill name.
23
+
24
+ Example: `project-stats.md` -> `/project stats` (if following the hyphenated naming convention)
25
+
26
+ See the skill's SKILL.md for the full behavior specification.
@@ -0,0 +1,39 @@
1
+ ---
2
+ description: Manage project context files for persistent AI memory across sessions
3
+ argument-hint: [name | update [name] | create [name]]
4
+ allowed-tools: Read, Write, Edit, Glob, Bash(mkdir:*), Bash(ls:*)
5
+ ---
6
+
7
+ # /project
8
+
9
+ Entry point for project context management. See the **project skill** for full behavior.
10
+
11
+ ## Arguments
12
+
13
+ $ARGUMENTS
14
+
15
+ ## Usage
16
+
17
+ ```
18
+ /project # List and select a project
19
+ /project {keywords} # Fuzzy-match and load
20
+ /project update # Update from conversation context
21
+ /project update {name} # Update specific project
22
+ /project create # Create new project interactively
23
+ /project create {name} # Create with name
24
+ ```
25
+
26
+ ## Configuration
27
+
28
+ From `~/.droid/skills/project/overrides.yaml`:
29
+ - `projects_dir` - Where projects live (default varies by AI tool)
30
+ - `preset` - Template format: `markdown` or `obsidian`
31
+
32
+ ## Behavior
33
+
34
+ Refer to the project skill for:
35
+ - **Loading**: How to fuzzy-match, handle multiple matches, summarize after load
36
+ - **Updating**: What to extract from conversation, versioning rules, changelog format
37
+ - **Creating**: Template structure by preset, required files
38
+
39
+ The skill's `references/` folder contains detailed specs for versioning, changelog formatting, and templates.
@@ -0,0 +1,70 @@
1
+ # Changelog Formatting
2
+
3
+ Projects use a split file pattern to minimize context usage when loading.
4
+
5
+ ## File Structure
6
+
7
+ - `CHANGELOG.md` (sibling to PROJECT.md) - Complete version history
8
+ - `PROJECT.md` - Only 3 most recent entries + link to full history
9
+
10
+ ## On Update
11
+
12
+ 1. **Check for CHANGELOG.md** sibling
13
+ - If missing: Create it and migrate any existing entries from PROJECT.md
14
+
15
+ 2. **Add new entry to CHANGELOG.md** (prepend after header)
16
+
17
+ 3. **Update PROJECT.md changelog section**
18
+ - Keep only 3 most recent entries
19
+ - Ensure link to full history exists
20
+
21
+ ## CHANGELOG.md Format
22
+
23
+ ```markdown
24
+ # Changelog
25
+
26
+ All notable changes to the {Project Name} project.
27
+
28
+ ## X.Y.Z - YYYY-MM-DD
29
+ - [Change description]
30
+ - [Another change]
31
+
32
+ ## X.Y.Z - YYYY-MM-DD
33
+ - [Previous changes]
34
+ ```
35
+
36
+ ## PROJECT.md Changelog Section Format
37
+
38
+ **Markdown preset:**
39
+ ```markdown
40
+ ## Changelog
41
+
42
+ See [CHANGELOG.md](CHANGELOG.md) for full history.
43
+
44
+ ### X.Y.Z - YYYY-MM-DD
45
+ - [Most recent]
46
+
47
+ ### X.Y.Z - YYYY-MM-DD
48
+ - [Second most recent]
49
+
50
+ ### X.Y.Z - YYYY-MM-DD
51
+ - [Third most recent]
52
+ ```
53
+
54
+ **Obsidian preset:**
55
+ ```markdown
56
+ ## Changelog
57
+
58
+ See [[CHANGELOG|full history]].
59
+
60
+ ### X.Y.Z - YYYY-MM-DD
61
+ - [Most recent]
62
+ ```
63
+
64
+ ## Guidelines
65
+
66
+ - Use present tense ("Add feature" not "Added feature")
67
+ - Keep entries concise but descriptive
68
+ - Group related changes in a single bullet when appropriate
69
+ - Most recent version at the top
70
+ - Use `##` headers in CHANGELOG.md, `###` in PROJECT.md
@@ -0,0 +1,58 @@
1
+ # Creating a Project
2
+
3
+ **Trigger:** `/project create {name?}` or user asks to start a new project
4
+
5
+ ## Procedure
6
+
7
+ 1. **Get project name**
8
+ - Use provided name, or ask if not provided
9
+ - Convert to kebab-case for folder name
10
+ - Convert to Title Case for display name
11
+
12
+ 2. **Create project folder**
13
+ - Path: `{projects_dir}/{kebab-case-name}/`
14
+ - Verify folder doesn't already exist
15
+
16
+ 3. **Create files from templates** (see `templates.md`)
17
+ - `PROJECT.md` - Main context file
18
+ - `CHANGELOG.md` - Version history
19
+ - Format varies by `preset` config (markdown vs obsidian)
20
+
21
+ 4. **Confirm creation**
22
+ - Show created folder path
23
+ - Offer to help fill in sections (Overview, Goals, Technical Details)
24
+
25
+ ## Naming Convention
26
+
27
+ | Input | Folder Name | Display Name |
28
+ |-------|-------------|--------------|
29
+ | "billing refactor" | `billing-refactor` | "Billing Refactor" |
30
+ | "API v2" | `api-v2` | "API V2" |
31
+ | "my-feature" | `my-feature` | "My Feature" |
32
+
33
+ ## Example
34
+
35
+ ```
36
+ User: /project create billing refactor
37
+
38
+ Claude: Creating new project...
39
+
40
+ Created: ~/.claude/projects/billing-refactor/
41
+ ├── PROJECT.md
42
+ └── CHANGELOG.md
43
+
44
+ Project "Billing Refactor" initialized at v0.1.0.
45
+
46
+ Would you like help filling in the Overview, Goals, or Technical Details sections?
47
+ ```
48
+
49
+ ## Initial Structure
50
+
51
+ New projects start minimal and grow organically. Common sections added over time:
52
+
53
+ - **Current Work** - Active tasks and focus areas
54
+ - **Decisions Log** - Key decisions with rationale
55
+ - **Related** - Links to other docs, tickets, repos
56
+ - **Roadmap** - Future phases
57
+
58
+ See `templates.md` for the full initial template.
@@ -0,0 +1,40 @@
1
+ # Loading a Project
2
+
3
+ **Trigger:** `/project {keywords}` or user asks to load/open a project
4
+
5
+ ## Procedure
6
+
7
+ 1. **List projects** in configured `projects_dir`
8
+ - Each subfolder with a `PROJECT.md` is a project
9
+
10
+ 2. **If no name provided:**
11
+ - Use AskUserQuestion to present available projects
12
+ - Let user select which to load
13
+
14
+ 3. **If name/keywords provided:**
15
+ - Parse as space-separated keywords (e.g., "transaction templates" → `["transaction", "templates"]`)
16
+ - Find folders where name contains ALL keywords (case-insensitive, hyphens as word separators)
17
+
18
+ 4. **Based on matches:**
19
+ - **No matches**: List available projects, ask user to select
20
+ - **One match**: Read `{folder}/PROJECT.md`
21
+ - **Multiple matches**: Use AskUserQuestion to select from matches
22
+
23
+ 5. **After loading:**
24
+ - Confirm which project was loaded
25
+ - Summarize key context (2-3 sentences)
26
+ - Use project contents for all subsequent work in the session
27
+
28
+ ## Example
29
+
30
+ ```
31
+ User: /project transaction templates
32
+
33
+ Claude: Found project "transaction-templates". Loading...
34
+
35
+ Loaded #project-transaction-templates (v1.16.1)
36
+
37
+ This project covers Handlebars templates for EDI transaction generation.
38
+ Key focus areas: template rendering service, permission controls, and
39
+ the upcoming UI for template management.
40
+ ```
@@ -0,0 +1,124 @@
1
+ # Project Templates
2
+
3
+ Templates vary by `preset` setting.
4
+
5
+ ## Markdown Preset (default)
6
+
7
+ ### PROJECT.md
8
+
9
+ ```markdown
10
+ ---
11
+ status: active
12
+ ---
13
+
14
+ # Project: {Name}
15
+
16
+ {Brief description}
17
+
18
+ | | |
19
+ |---|---|
20
+ | **Version** | 0.1.0 |
21
+ | **Started** | {today} |
22
+ | **Status** | Active |
23
+
24
+ ## Overview
25
+
26
+ {**What** this project does, **why** it exists}
27
+
28
+ ## Goals
29
+
30
+ - {Goal 1}
31
+
32
+ ## Technical Details
33
+
34
+ {Architecture, key files, patterns}
35
+
36
+ ## Changelog
37
+
38
+ See [CHANGELOG.md](CHANGELOG.md) for full history.
39
+
40
+ ### 0.1.0 - {today}
41
+ - Initial project setup
42
+ ```
43
+
44
+ ### CHANGELOG.md
45
+
46
+ ```markdown
47
+ # Changelog
48
+
49
+ All notable changes to the {Name} project.
50
+
51
+ ## 0.1.0 - {today}
52
+ - Initial project setup
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Obsidian Preset
58
+
59
+ ### PROJECT.md
60
+
61
+ ```markdown
62
+ ---
63
+ type: project
64
+ status: active
65
+ created: {today}
66
+ updated: {today}
67
+ ---
68
+
69
+ # Project: {Name}
70
+
71
+ {Brief description}
72
+
73
+ | | |
74
+ |---|---|
75
+ | **Version** | 0.1.0 |
76
+ | **Started** | {today} |
77
+ | **Status** | Active |
78
+
79
+ ## Overview
80
+
81
+ {**What** this project does, **why** it exists}
82
+
83
+ ## Goals
84
+
85
+ - {Goal 1}
86
+
87
+ ## Technical Details
88
+
89
+ {Architecture, key files, patterns}
90
+
91
+ ## Related
92
+
93
+ - {Links to related notes}
94
+
95
+ ## Changelog
96
+
97
+ See [[CHANGELOG|full history]].
98
+
99
+ ### 0.1.0 - {today}
100
+ - Initial project setup
101
+ ```
102
+
103
+ ### CHANGELOG.md
104
+
105
+ Same as markdown preset.
106
+
107
+ ---
108
+
109
+ ## Template Variables
110
+
111
+ | Variable | Expands To |
112
+ |----------|------------|
113
+ | `{today}` | YYYY-MM-DD |
114
+ | `{Name}` | Project name (Title Case) |
115
+ | `{name}` | Project name (lowercase) |
116
+ | `{kebab-name}` | Folder name (kebab-case) |
117
+
118
+ ## Preset Differences Summary
119
+
120
+ | Feature | Markdown | Obsidian |
121
+ |---------|----------|----------|
122
+ | Links | `[text](path)` | `[[path\|text]]` |
123
+ | YAML properties | Minimal (`status`) | Rich (`type`, `created`, `updated`) |
124
+ | Related section | Optional | Included |
@@ -0,0 +1,64 @@
1
+ # Updating a Project
2
+
3
+ **Trigger:** `/project update` or user asks to capture/save learnings
4
+
5
+ ## Procedure
6
+
7
+ 1. **Identify the project:**
8
+ - If name provided: Find matching project (same logic as loading)
9
+ - If no name: Check conversation for prior project load
10
+ - If still unclear: List projects and ask which to update
11
+
12
+ 2. **Analyze the conversation for:**
13
+ - New implementation details or patterns
14
+ - Key decisions and rationale
15
+ - Technical constraints discovered
16
+ - Progress on features
17
+ - Important file paths or code locations
18
+ - Bug fixes or gotchas encountered
19
+
20
+ 3. **If significant new information found:**
21
+ - Propose specific sections/content to add or update
22
+ - Show what will be changed
23
+ - Ask for confirmation before proceeding
24
+
25
+ 4. **If no obvious updates:**
26
+ - Ask what the user would like to update
27
+ - Suggest sections: metadata, implementation details, technical decisions, notes
28
+
29
+ 5. **After approval:**
30
+ - Read current project file
31
+ - Make approved updates, preserving existing structure
32
+ - Determine version bump (see `versioning.md`)
33
+ - Add changelog entry (see `changelog.md`)
34
+ - Confirm what was updated
35
+
36
+ ## What to Capture
37
+
38
+ Good project updates include:
39
+
40
+ | Type | Examples |
41
+ |------|----------|
42
+ | **Decisions** | "Chose cursor-based pagination over offset" |
43
+ | **Patterns** | "Using repository pattern for data access" |
44
+ | **Constraints** | "Must support backwards compatibility with v1 API" |
45
+ | **Gotchas** | "Watch out for timezone handling in date fields" |
46
+ | **Progress** | "Completed validation layer, starting on UI" |
47
+ | **File locations** | "Key files: `src/services/template.service.ts`" |
48
+
49
+ ## Example
50
+
51
+ ```
52
+ User: /project update
53
+
54
+ Claude: I'll update #project-transaction-templates with learnings from this session.
55
+
56
+ Proposed changes:
57
+ - Add "Permission Controls" section documenting the new RBAC approach
58
+ - Update Technical Details with the Handlebars helper patterns we established
59
+ - Note the decision to use soft deletes
60
+
61
+ This looks like a minor version bump (0.16.0 → 0.17.0).
62
+
63
+ Proceed with these updates?
64
+ ```
@@ -0,0 +1,36 @@
1
+ # Version Bumping Rules
2
+
3
+ Use semantic versioning for project docs.
4
+
5
+ ## When to Bump
6
+
7
+ | Type | When | Examples |
8
+ |------|------|----------|
9
+ | **Major** | Breaking changes, complete rewrites, fundamental architecture changes | New approach that invalidates previous docs |
10
+ | **Minor** | New features, new sections, significant additions | New helper added, new endpoint, new workflow |
11
+ | **Patch** | Clarifications, small updates, typo fixes, status changes | Wording tweaks, deferred features, bug notes |
12
+
13
+ ## Auto-Determination
14
+
15
+ Analyze the changes being made:
16
+
17
+ 1. Default to **minor** for most content additions
18
+ 2. Use **patch** for small clarifications or status updates
19
+ 3. Use **major** only for fundamental changes (rare)
20
+ 4. Only ask user if genuinely ambiguous
21
+
22
+ ## Examples
23
+
24
+ **Patch (0.1.0 -> 0.1.1):**
25
+ - Fixed typo in technical details
26
+ - Updated status from active to reference
27
+ - Added note about known limitation
28
+
29
+ **Minor (0.1.1 -> 0.2.0):**
30
+ - Added new "Authentication" section
31
+ - Documented new API endpoint
32
+ - Added architecture diagram
33
+
34
+ **Major (0.2.0 -> 1.0.0):**
35
+ - Complete rewrite of implementation approach
36
+ - Switched from REST to GraphQL (invalidates prior docs)