You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`planLoad` calls the resolver behind the scenes, which looks for index files at four canonical paths: `~/.ai-loadout/index.json` (global), `$AI_LOADOUT_ORG` (org), `<cwd>/.claude/loadout/index.json` (project), and `$AI_LOADOUT_SESSION` (session). Missing layers are normal -- most setups only use the project layer. If no index is found anywhere, the plan returns empty arrays.
This checks for structural issues: missing fields, duplicate IDs, non-kebab-case IDs, domain entries without keywords, summaries over 120 characters, and negative budget values.
You can also run `ai-loadout --help` to see all available commands, or `ai-loadout --version` to confirm which version is installed.
136
+
137
+
### 6. Write a payload file with frontmatter
138
+
139
+
Create the file referenced by your entry's `path` field. Include frontmatter so that the routing metadata lives with the content:
140
+
141
+
```markdown
142
+
---
143
+
id: testing-rules
144
+
keywords: [test, jest, vitest, coverage]
145
+
patterns: [test_suite]
146
+
priority: domain
147
+
triggers:
148
+
task: true
149
+
plan: true
150
+
edit: false
151
+
---
152
+
153
+
# Testing Conventions
154
+
155
+
All code must have tests. Minimum coverage: 80%.
156
+
Use vitest for unit tests...
157
+
```
158
+
159
+
The frontmatter is the source of truth for routing. The index is derived from it. If they ever drift, `ai-loadout validate` catches the mismatch.
160
+
127
161
## Common Mistakes
128
162
129
163
**Putting everything at `core` priority.** Core entries are always loaded regardless of the task. If you make everything core, you lose the benefit of on-demand routing. Reserve core for truly non-negotiable rules (3-5 entries max).
Copy file name to clipboardExpand all lines: site/src/content/docs/handbook/concepts.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -45,7 +45,7 @@ The default is `{ task: true, plan: true, edit: false }`. These are advisory —
45
45
46
46
## Keyword Matching
47
47
48
-
The matcher tokenizes the task description into lowercase words (stripping non-alphanumeric characters and filtering single-character tokens), then compares against each entry's `keywords` array:
48
+
The matcher tokenizes the task description into lowercase words (replacing non-alphanumeric characters with spaces, splitting on whitespace, and filtering out single-character tokens), then compares against each entry's `keywords` array:
49
49
50
50
1. For each keyword, split it on spaces/hyphens and check if all words are present in the task tokens
Resolves all layers (global → org → project → session), matches the task, and separates entries by load mode.
36
+
Resolves all layers (global → org → project → session), matches the task, and separates entries by load mode. The `manual` array includes both entries with `manual` priority and any domain entries that did not match the current task (score below the 0.1 threshold).
0 commit comments