@orderful/droid 0.6.0 → 0.8.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/CHANGELOG.md +45 -0
- package/README.md +80 -89
- package/assets/droid+claude.png +0 -0
- package/bun.lock +1 -1
- package/dist/commands/setup.d.ts +1 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +77 -9
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/tui.d.ts.map +1 -1
- package/dist/commands/tui.js +111 -70
- package/dist/commands/tui.js.map +1 -1
- package/dist/lib/agents.d.ts +19 -4
- package/dist/lib/agents.d.ts.map +1 -1
- package/dist/lib/agents.js +121 -42
- package/dist/lib/agents.js.map +1 -1
- package/dist/lib/skills.d.ts.map +1 -1
- package/dist/lib/skills.js +55 -0
- package/dist/lib/skills.js.map +1 -1
- package/dist/lib/types.d.ts +1 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/skills/brain/SKILL.md +146 -0
- package/dist/skills/brain/SKILL.yaml +31 -0
- package/dist/skills/brain/commands/README.md +7 -0
- package/dist/skills/brain/commands/brain.md +50 -0
- package/dist/skills/brain/references/metadata.md +59 -0
- package/dist/skills/brain/references/naming.md +48 -0
- package/dist/skills/brain/references/templates.md +102 -0
- package/dist/skills/brain/references/workflows.md +198 -0
- package/dist/skills/brain-obsidian/SKILL.md +108 -0
- package/dist/skills/brain-obsidian/SKILL.yaml +45 -0
- package/dist/skills/brain-obsidian/references/templates.md +144 -0
- package/dist/skills/brain-obsidian/references/workflows.md +192 -0
- package/dist/skills/code-review/SKILL.md +57 -0
- package/dist/skills/code-review/SKILL.yaml +22 -0
- package/dist/skills/code-review/agents/edi-standards-reviewer/AGENT.md +39 -0
- package/dist/skills/code-review/agents/edi-standards-reviewer/AGENT.yaml +14 -0
- package/dist/skills/code-review/agents/error-handling-reviewer/AGENT.md +51 -0
- package/dist/skills/code-review/agents/error-handling-reviewer/AGENT.yaml +14 -0
- package/dist/skills/code-review/agents/test-coverage-analyzer/AGENT.md +53 -0
- package/dist/skills/code-review/agents/test-coverage-analyzer/AGENT.yaml +14 -0
- package/dist/skills/code-review/agents/type-reviewer/AGENT.md +50 -0
- package/dist/skills/code-review/agents/type-reviewer/AGENT.yaml +13 -0
- package/dist/skills/code-review/commands/code-review.md +91 -0
- package/dist/skills/comments/SKILL.md +20 -5
- package/dist/skills/comments/SKILL.yaml +1 -1
- package/dist/skills/comments/commands/comments.md +1 -1
- package/dist/skills/project/SKILL.md +9 -7
- package/dist/skills/project/SKILL.yaml +1 -1
- package/dist/skills/project/commands/project.md +9 -4
- package/dist/skills/project/references/creating.md +9 -4
- package/dist/skills/project/references/loading.md +11 -5
- package/package.json +1 -1
- package/src/commands/setup.test.ts +276 -0
- package/src/commands/setup.ts +80 -10
- package/src/commands/tui.tsx +149 -82
- package/src/lib/agents.ts +134 -44
- package/src/lib/skills.ts +60 -0
- package/src/lib/types.ts +1 -0
- package/src/skills/brain/SKILL.md +146 -0
- package/src/skills/brain/SKILL.yaml +31 -0
- package/src/skills/brain/commands/README.md +7 -0
- package/src/skills/brain/commands/brain.md +50 -0
- package/src/skills/brain/references/metadata.md +59 -0
- package/src/skills/brain/references/naming.md +48 -0
- package/src/skills/brain/references/templates.md +102 -0
- package/src/skills/brain/references/workflows.md +198 -0
- package/src/skills/brain-obsidian/SKILL.md +108 -0
- package/src/skills/brain-obsidian/SKILL.yaml +45 -0
- package/src/skills/brain-obsidian/references/templates.md +144 -0
- package/src/skills/brain-obsidian/references/workflows.md +192 -0
- package/src/skills/code-review/SKILL.md +57 -0
- package/src/skills/code-review/SKILL.yaml +22 -0
- package/src/skills/code-review/agents/edi-standards-reviewer/AGENT.md +39 -0
- package/src/skills/code-review/agents/edi-standards-reviewer/AGENT.yaml +14 -0
- package/src/skills/code-review/agents/error-handling-reviewer/AGENT.md +51 -0
- package/src/skills/code-review/agents/error-handling-reviewer/AGENT.yaml +14 -0
- package/src/skills/code-review/agents/test-coverage-analyzer/AGENT.md +53 -0
- package/src/skills/code-review/agents/test-coverage-analyzer/AGENT.yaml +14 -0
- package/src/skills/code-review/agents/type-reviewer/AGENT.md +50 -0
- package/src/skills/code-review/agents/type-reviewer/AGENT.yaml +13 -0
- package/src/skills/code-review/commands/code-review.md +91 -0
- package/src/skills/comments/SKILL.md +20 -5
- package/src/skills/comments/SKILL.yaml +1 -1
- package/src/skills/comments/commands/comments.md +1 -1
- package/src/skills/project/SKILL.md +9 -7
- package/src/skills/project/SKILL.yaml +1 -1
- package/src/skills/project/commands/project.md +9 -4
- package/src/skills/project/references/creating.md +9 -4
- package/src/skills/project/references/loading.md +11 -5
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
You are a testing specialist focused on comprehensive coverage.
|
|
2
|
+
|
|
3
|
+
## Review Process
|
|
4
|
+
|
|
5
|
+
1. Identify changed files (production code)
|
|
6
|
+
2. Find corresponding test files
|
|
7
|
+
3. Analyze: Are key behaviors tested?
|
|
8
|
+
4. Check edge cases: nulls, errors, boundaries, async paths
|
|
9
|
+
|
|
10
|
+
## Specific Checks
|
|
11
|
+
|
|
12
|
+
- New functions should have tests
|
|
13
|
+
- Conditionals: Are all branches covered?
|
|
14
|
+
- Error paths: Are failure cases tested?
|
|
15
|
+
- Async code: Is timeout/failure handling tested?
|
|
16
|
+
- Mocking: Are external dependencies properly mocked?
|
|
17
|
+
|
|
18
|
+
## Orderful-Specific
|
|
19
|
+
|
|
20
|
+
- BillingService methods need billing event assertions
|
|
21
|
+
- Partnership changes need isolation tests
|
|
22
|
+
- Transaction Template rendering needs snapshot/output tests
|
|
23
|
+
|
|
24
|
+
## Output Format
|
|
25
|
+
|
|
26
|
+
Return JSON:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"issues": [
|
|
31
|
+
{
|
|
32
|
+
"file": "src/billing/BillingService.ts",
|
|
33
|
+
"line": 67,
|
|
34
|
+
"severity": "important",
|
|
35
|
+
"confidence": 90,
|
|
36
|
+
"issue": "New `calculatePartnershipFee` function has no test coverage",
|
|
37
|
+
"suggestion": "Add test in BillingService.spec.ts covering standard and 'first partnership free' scenarios"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"coverage_summary": {
|
|
41
|
+
"new_functions_tested": 3,
|
|
42
|
+
"new_functions_untested": 1,
|
|
43
|
+
"branches_uncovered": 2
|
|
44
|
+
},
|
|
45
|
+
"summary": "One-line summary of test coverage concerns"
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Severity Guidelines
|
|
50
|
+
|
|
51
|
+
- **critical**: No tests for billing/payment code, security-related code untested
|
|
52
|
+
- **important**: New functions untested, major branches uncovered
|
|
53
|
+
- **suggestion**: Edge cases, additional assertions
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
name: test-coverage-analyzer
|
|
2
|
+
description: >-
|
|
3
|
+
Analyze test coverage for code changes. Use PROACTIVELY when reviewing PRs
|
|
4
|
+
or before merging to ensure adequate test coverage.
|
|
5
|
+
version: 0.1.0
|
|
6
|
+
status: alpha
|
|
7
|
+
mode: subagent
|
|
8
|
+
model: sonnet
|
|
9
|
+
color: green
|
|
10
|
+
tools:
|
|
11
|
+
- Read
|
|
12
|
+
- Grep
|
|
13
|
+
- Glob
|
|
14
|
+
- Bash
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
You are a TypeScript expert focused on type safety and design.
|
|
2
|
+
|
|
3
|
+
## Review Focus
|
|
4
|
+
|
|
5
|
+
1. **No sneaky `any`**: Explicit types for function params/returns
|
|
6
|
+
2. **Domain types**: Use branded types for IDs (PartnerId, TransactionId)
|
|
7
|
+
3. **Null safety**: Proper handling of optional values
|
|
8
|
+
4. **Interface contracts**: APIs have explicit input/output types
|
|
9
|
+
5. **Enums and unions**: Use discriminated unions for state machines
|
|
10
|
+
|
|
11
|
+
## Specific Patterns at Orderful
|
|
12
|
+
|
|
13
|
+
- BillingEvent types should be exhaustive
|
|
14
|
+
- Partnership configs need strict typing
|
|
15
|
+
- Transaction Templates have well-defined shapes
|
|
16
|
+
- API responses should use Zod schemas
|
|
17
|
+
|
|
18
|
+
## Anti-Patterns to Flag
|
|
19
|
+
|
|
20
|
+
- `as any` type assertions
|
|
21
|
+
- Implicit `any` from untyped dependencies
|
|
22
|
+
- `// @ts-ignore` without explanation
|
|
23
|
+
- Overly permissive union types
|
|
24
|
+
- Missing return types on exported functions
|
|
25
|
+
|
|
26
|
+
## Output Format
|
|
27
|
+
|
|
28
|
+
Return JSON:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"issues": [
|
|
33
|
+
{
|
|
34
|
+
"file": "src/api/handlers.ts",
|
|
35
|
+
"line": 45,
|
|
36
|
+
"severity": "important",
|
|
37
|
+
"confidence": 88,
|
|
38
|
+
"issue": "Function `processTransaction` has implicit `any` return type",
|
|
39
|
+
"suggestion": "Add explicit return type `Promise<TransactionResult>`"
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"summary": "One-line summary of type safety concerns"
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Severity Guidelines
|
|
47
|
+
|
|
48
|
+
- **critical**: `any` in billing/transaction code, missing API contract types
|
|
49
|
+
- **important**: Implicit `any`, missing return types on public APIs
|
|
50
|
+
- **suggestion**: Could use stricter types, minor improvements
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
name: type-reviewer
|
|
2
|
+
description: >-
|
|
3
|
+
Review TypeScript type design and interface contracts. Check for proper
|
|
4
|
+
typing, avoid `any`, ensure domain types are used correctly.
|
|
5
|
+
version: 0.1.0
|
|
6
|
+
status: alpha
|
|
7
|
+
mode: subagent
|
|
8
|
+
model: sonnet
|
|
9
|
+
color: purple
|
|
10
|
+
tools:
|
|
11
|
+
- Read
|
|
12
|
+
- Grep
|
|
13
|
+
- Glob
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run comprehensive code review using specialized agents. Accepts PR number, 'staged', 'branch', or file path.
|
|
3
|
+
argument-hint: "[#123 | staged | branch | path/to/file.ts]"
|
|
4
|
+
allowed-tools: Task, Bash(git:*), Bash(gh:*), Read, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /code-review - Run comprehensive code review using specialized agents
|
|
8
|
+
|
|
9
|
+
Review target: $ARGUMENTS
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/code-review #123 # Review PR #123
|
|
15
|
+
/code-review staged # Review staged changes
|
|
16
|
+
/code-review branch # Review current branch vs main
|
|
17
|
+
/code-review path/to/file # Review specific file
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Step 1: Determine Review Scope
|
|
21
|
+
|
|
22
|
+
Parse the argument to determine what to review:
|
|
23
|
+
|
|
24
|
+
**If argument starts with `#` or is a number (e.g., `#123` or `123`):**
|
|
25
|
+
- This is a PR number
|
|
26
|
+
- Fetch PR details: `gh pr view $PR_NUMBER --json title,body,baseRefName,headRefName,files`
|
|
27
|
+
- Get the diff: `gh pr diff $PR_NUMBER`
|
|
28
|
+
- Note the PR author and description for context
|
|
29
|
+
|
|
30
|
+
**If argument is `staged` or empty:**
|
|
31
|
+
- Review staged changes: `git diff --cached`
|
|
32
|
+
|
|
33
|
+
**If argument is `branch`:**
|
|
34
|
+
- Review current branch vs main: `git diff origin/main...HEAD`
|
|
35
|
+
|
|
36
|
+
**If argument is a file path:**
|
|
37
|
+
- Review specific file: `git diff HEAD -- $FILE_PATH`
|
|
38
|
+
- If no changes, review the entire file for issues
|
|
39
|
+
|
|
40
|
+
### Step 2: Gather Context
|
|
41
|
+
|
|
42
|
+
For PR reviews, also fetch:
|
|
43
|
+
- PR description (may contain context about the change)
|
|
44
|
+
- Linked issues: `gh pr view $PR_NUMBER --json body` and parse for #issue refs
|
|
45
|
+
- Changed files list for targeted agent assignment
|
|
46
|
+
|
|
47
|
+
### Step 3: Parallel Agent Reviews
|
|
48
|
+
|
|
49
|
+
Launch these agents in parallel using the Task tool with `run_in_background: true`:
|
|
50
|
+
|
|
51
|
+
1. **edi-standards-reviewer**: EDI patterns, partnership handling, billing concerns
|
|
52
|
+
2. **test-coverage-analyzer**: Test completeness and edge cases
|
|
53
|
+
3. **error-handling-reviewer**: Silent failures, missing error handling
|
|
54
|
+
4. **type-reviewer**: Type design, interface contracts
|
|
55
|
+
|
|
56
|
+
Pass each agent:
|
|
57
|
+
1. The diff content
|
|
58
|
+
2. The full file content for changed files (for context)
|
|
59
|
+
3. PR description if available
|
|
60
|
+
|
|
61
|
+
Use TaskOutput to collect results from all agents.
|
|
62
|
+
|
|
63
|
+
### Step 4: Confidence Filtering
|
|
64
|
+
|
|
65
|
+
Each agent returns issues with confidence scores (0-100).
|
|
66
|
+
Filter out issues with confidence < 80.
|
|
67
|
+
|
|
68
|
+
### Step 5: Synthesize Report
|
|
69
|
+
|
|
70
|
+
Compile findings into a prioritized report:
|
|
71
|
+
|
|
72
|
+
**PR #123: "Add partnership billing events"** (if reviewing a PR)
|
|
73
|
+
*Author: @username*
|
|
74
|
+
|
|
75
|
+
**Critical** (security, data loss, billing errors)
|
|
76
|
+
- `file.ts:42` - Issue description
|
|
77
|
+
|
|
78
|
+
**Important** (bugs, missing tests, type issues)
|
|
79
|
+
- `file.ts:67` - Issue description
|
|
80
|
+
|
|
81
|
+
**Suggestions** (style, readability)
|
|
82
|
+
- `file.ts:89` - Issue description
|
|
83
|
+
|
|
84
|
+
**Summary**: X critical, Y important, Z suggestions across N files.
|
|
85
|
+
|
|
86
|
+
### Step 6: Offer Actions (for PRs)
|
|
87
|
+
|
|
88
|
+
After presenting the report, offer:
|
|
89
|
+
- "Would you like me to post this as a PR comment?"
|
|
90
|
+
- "Should I suggest fixes for any of these issues?"
|
|
91
|
+
- "Want me to check out this branch and fix the critical issues?"
|
|
@@ -31,12 +31,27 @@ The AI will respond with `> @{user_mention}` (configured in droid setup, e.g., `
|
|
|
31
31
|
|
|
32
32
|
## Tag Convention
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|-----|----------------|---------|
|
|
36
|
-
| `@droid` | User | User leaving notes/questions for AI |
|
|
37
|
-
| `@{user}` (e.g., `@fry`) | AI | AI leaving responses/questions for user |
|
|
34
|
+
**CRITICAL: The `@mention` is who you're talking TO, not who is speaking.**
|
|
38
35
|
|
|
39
|
-
|
|
36
|
+
Think of it like addressing someone in conversation:
|
|
37
|
+
- "Hey @droid, what do you think?" → User talking TO the AI
|
|
38
|
+
- "Good point @fry, here's my take..." → AI talking TO the user
|
|
39
|
+
|
|
40
|
+
| When you see... | Who wrote it | Who it's addressed to |
|
|
41
|
+
|-----------------|--------------|----------------------|
|
|
42
|
+
| `> @droid ...` | User | AI (droid) |
|
|
43
|
+
| `> @fry ...` | AI | User (fry) |
|
|
44
|
+
|
|
45
|
+
**Examples:**
|
|
46
|
+
```markdown
|
|
47
|
+
> @droid Can you explain this function? ← User asking AI
|
|
48
|
+
> @fry This function calculates the hash... ← AI responding to user
|
|
49
|
+
|
|
50
|
+
> @droid Should we refactor this? ← User asking AI
|
|
51
|
+
> @fry Yes, I'd suggest extracting... ← AI responding to user
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Never flip this.** When responding to a `@droid` comment, always use `@{user}` (e.g., `@fry`) because you're addressing the user, not yourself.
|
|
40
55
|
|
|
41
56
|
## When NOT to Use
|
|
42
57
|
|
|
@@ -3,7 +3,7 @@ description: >-
|
|
|
3
3
|
Enable inline conversations using @droid/@user markers. Tag @droid to ask the AI,
|
|
4
4
|
AI responds with @{your-name}. Use /comments check to address markers, /comments cleanup
|
|
5
5
|
to remove resolved threads. Ideal for code review notes and async collaboration.
|
|
6
|
-
version: 0.2.
|
|
6
|
+
version: 0.2.2
|
|
7
7
|
status: beta
|
|
8
8
|
dependencies: []
|
|
9
9
|
provides_output: false
|
|
@@ -32,31 +32,33 @@ Chat history disappears. Projects persist.
|
|
|
32
32
|
|
|
33
33
|
## Configuration
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
**IMPORTANT:** Before using any default paths, ALWAYS read `~/.droid/skills/project/overrides.yaml` first. If `projects_dir` is configured there, use that path. Only fall back to defaults if the file doesn't exist or lacks a `projects_dir` setting.
|
|
36
36
|
|
|
37
37
|
| Setting | Default | Description |
|
|
38
38
|
|---------|---------|-------------|
|
|
39
|
-
| `projects_dir` |
|
|
39
|
+
| `projects_dir` | (see below) | Where projects are stored |
|
|
40
40
|
| `preset` | `markdown` | Output format: `markdown` or `obsidian` |
|
|
41
41
|
|
|
42
|
-
Default `projects_dir` by AI tool:
|
|
42
|
+
Default `projects_dir` by AI tool (only if not configured):
|
|
43
43
|
- **claude-code**: `~/.claude/projects`
|
|
44
|
-
- **opencode**: `~/.opencode/projects`
|
|
44
|
+
- **opencode**: `~/.config/opencode/projects`
|
|
45
45
|
|
|
46
46
|
## Commands
|
|
47
47
|
|
|
48
48
|
| Command | Action |
|
|
49
49
|
|---------|--------|
|
|
50
50
|
| `/project` | List and select a project |
|
|
51
|
-
| `/project {keywords}` |
|
|
52
|
-
| `/project create {name}` | Create new project |
|
|
51
|
+
| `/project {keywords}` | **Search** for existing project (fuzzy-match and load) |
|
|
52
|
+
| `/project create {name}` | Create new project (requires `create` keyword) |
|
|
53
53
|
| `/project update` | Update from conversation context |
|
|
54
54
|
|
|
55
|
+
**IMPORTANT:** The default action for `/project {keywords}` is to **SEARCH** for existing projects, NOT create. Only use `/project create {name}` when the user explicitly wants to create a new project.
|
|
56
|
+
|
|
55
57
|
## Loading a Project
|
|
56
58
|
|
|
57
59
|
**Trigger:** `/project {keywords}` or user asks to load/open a project
|
|
58
60
|
|
|
59
|
-
**TLDR:** Fuzzy-match keywords against project folders, read PROJECT.md, summarize context.
|
|
61
|
+
**TLDR:** Search for and load an existing project. Fuzzy-match keywords against project folders, read PROJECT.md, summarize context.
|
|
60
62
|
|
|
61
63
|
Full procedure: `references/loading.md`
|
|
62
64
|
|
|
@@ -5,7 +5,7 @@ description: >-
|
|
|
5
5
|
new learnings (/project update), or create new projects (/project create).
|
|
6
6
|
Use when working on multi-session features, refactors, or any work that
|
|
7
7
|
benefits from accumulated context.
|
|
8
|
-
version: 0.1.
|
|
8
|
+
version: 0.1.1
|
|
9
9
|
status: beta
|
|
10
10
|
dependencies: []
|
|
11
11
|
provides_output: false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Manage project context files for persistent AI memory across sessions
|
|
3
|
-
argument-hint: [
|
|
3
|
+
argument-hint: "[{keywords} | update | create {name}]"
|
|
4
4
|
allowed-tools: Read, Write, Edit, Glob, Bash(mkdir:*), Bash(ls:*)
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -12,20 +12,25 @@ Entry point for project context management. See the **project skill** for full b
|
|
|
12
12
|
|
|
13
13
|
$ARGUMENTS
|
|
14
14
|
|
|
15
|
+
## Default Behavior
|
|
16
|
+
|
|
17
|
+
**IMPORTANT:** When given keywords (e.g., `/project audit-log`), the default action is to **SEARCH** for existing projects, NOT create. Only create a project when the `create` keyword is explicitly used.
|
|
18
|
+
|
|
15
19
|
## Usage
|
|
16
20
|
|
|
17
21
|
```
|
|
18
22
|
/project # List and select a project
|
|
19
|
-
/project {keywords} # Fuzzy-match and load
|
|
23
|
+
/project {keywords} # SEARCH: Fuzzy-match and load existing project
|
|
20
24
|
/project update # Update from conversation context
|
|
21
25
|
/project update {name} # Update specific project
|
|
22
26
|
/project create # Create new project interactively
|
|
23
|
-
/project create {name} # Create with name
|
|
27
|
+
/project create {name} # Create with name (requires "create" keyword)
|
|
24
28
|
```
|
|
25
29
|
|
|
26
30
|
## Configuration
|
|
27
31
|
|
|
28
|
-
|
|
32
|
+
**ALWAYS read `~/.droid/skills/project/overrides.yaml` first.** Use configured values if present, only fall back to defaults if missing.
|
|
33
|
+
|
|
29
34
|
- `projects_dir` - Where projects live (default varies by AI tool)
|
|
30
35
|
- `preset` - Template format: `markdown` or `obsidian`
|
|
31
36
|
|
|
@@ -4,21 +4,26 @@
|
|
|
4
4
|
|
|
5
5
|
## Procedure
|
|
6
6
|
|
|
7
|
-
1. **
|
|
7
|
+
1. **Read config first**
|
|
8
|
+
- Read `~/.droid/skills/project/overrides.yaml`
|
|
9
|
+
- Use `projects_dir` if configured, otherwise use default for current AI tool
|
|
10
|
+
- Use `preset` if configured (markdown or obsidian)
|
|
11
|
+
|
|
12
|
+
2. **Get project name**
|
|
8
13
|
- Use provided name, or ask if not provided
|
|
9
14
|
- Convert to kebab-case for folder name
|
|
10
15
|
- Convert to Title Case for display name
|
|
11
16
|
|
|
12
|
-
|
|
17
|
+
3. **Create project folder**
|
|
13
18
|
- Path: `{projects_dir}/{kebab-case-name}/`
|
|
14
19
|
- Verify folder doesn't already exist
|
|
15
20
|
|
|
16
|
-
|
|
21
|
+
4. **Create files from templates** (see `templates.md`)
|
|
17
22
|
- `PROJECT.md` - Main context file
|
|
18
23
|
- `CHANGELOG.md` - Version history
|
|
19
24
|
- Format varies by `preset` config (markdown vs obsidian)
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
5. **Confirm creation**
|
|
22
27
|
- Show created folder path
|
|
23
28
|
- Offer to help fill in sections (Overview, Goals, Technical Details)
|
|
24
29
|
|
|
@@ -2,25 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
**Trigger:** `/project {keywords}` or user asks to load/open a project
|
|
4
4
|
|
|
5
|
+
**IMPORTANT:** This is a SEARCH operation. When keywords are provided, search for existing projects - do NOT create a new project. Creating requires the explicit `/project create {name}` command.
|
|
6
|
+
|
|
5
7
|
## Procedure
|
|
6
8
|
|
|
7
|
-
1. **
|
|
9
|
+
1. **Read config first**
|
|
10
|
+
- Read `~/.droid/skills/project/overrides.yaml`
|
|
11
|
+
- Use `projects_dir` if configured, otherwise use default for current AI tool
|
|
12
|
+
|
|
13
|
+
2. **List projects** in configured `projects_dir`
|
|
8
14
|
- Each subfolder with a `PROJECT.md` is a project
|
|
9
15
|
|
|
10
|
-
|
|
16
|
+
3. **If no name provided:**
|
|
11
17
|
- Use AskUserQuestion to present available projects
|
|
12
18
|
- Let user select which to load
|
|
13
19
|
|
|
14
|
-
|
|
20
|
+
4. **If name/keywords provided:**
|
|
15
21
|
- Parse as space-separated keywords (e.g., "transaction templates" → `["transaction", "templates"]`)
|
|
16
22
|
- Find folders where name contains ALL keywords (case-insensitive, hyphens as word separators)
|
|
17
23
|
|
|
18
|
-
|
|
24
|
+
5. **Based on matches:**
|
|
19
25
|
- **No matches**: List available projects, ask user to select
|
|
20
26
|
- **One match**: Read `{folder}/PROJECT.md`
|
|
21
27
|
- **Multiple matches**: Use AskUserQuestion to select from matches
|
|
22
28
|
|
|
23
|
-
|
|
29
|
+
6. **After loading:**
|
|
24
30
|
- Confirm which project was loaded
|
|
25
31
|
- Summarize key context (2-3 sentences)
|
|
26
32
|
- Use project contents for all subsequent work in the session
|