agent-directives 0.2.1 → 0.4.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Agent Directives
2
2
 
3
- A collection of reusable directives, skills, and templates for AI coding agents.
3
+ A collection of reusable directives, skills, rules, and templates for AI coding agents.
4
4
  Extract the parts you need, drop them into your project, and customize the
5
5
  placeholders. Everything works standalone — no framework lock-in, no hidden
6
6
  dependencies between files.
@@ -13,6 +13,7 @@ dependencies between files.
13
13
  | **Navigation** | 1 directive | SAFE pattern for exploring codebases before implementation |
14
14
  | **Memory** | 2 directives | Error memory and session decisions for persistent learning |
15
15
  | **Skills** | 13 skills | Code reviewer, test reviewer, spec reviewer, product requirements writer, implementation task planner, subagent-driven development, self-audit, systematic debugging, architecture boundary reviewer, codebase health reviewer, production readiness reviewer, harness hooks reviewer, and MCP integration reviewer |
16
+ | **Rules** | 6 Angular rules | Lazy-loaded Angular project structure, components/templates, coding style, application patterns, security, and testing standards — selected by stack or explicit category |
16
17
  | **Templates** | 4 templates | Drop-in instruction files for AGENTS.md, CLAUDE.md, Copilot, and decision logs |
17
18
  | **Tooling** | TypeScript scripts | Validate directive wiring, assemble eval scenarios, record loaded-file manifests, and generate eval health reports |
18
19
 
@@ -20,7 +21,7 @@ dependencies between files.
20
21
 
21
22
  The repository contains two things you install into your own project:
22
23
 
23
- 1. **Directive and skill files** — copied from `directives/` and `skills/`.
24
+ 1. **Directive, skill, and rule files** — copied from `directives/`, `skills/`, and `rules/`.
24
25
  2. **A root instruction file** — copied from `templates/` and renamed for your agent
25
26
  (`AGENTS.md`, `CLAUDE.md`, or `.github/copilot-instructions.md`).
26
27
 
@@ -33,6 +34,9 @@ cd /path/to/your-project
33
34
  # Install the required Codex/OpenAI agent directives and skills.
34
35
  npx agent-directives sync --tool codex --yes
35
36
 
37
+ # Optionally install detected stack rules, such as Angular rules for angular.json/@angular/core projects.
38
+ npx agent-directives sync --tool codex --yes --rules auto
39
+
36
40
  # Add the root instruction file, then edit every <!-- FILL IN: ... --> placeholder.
37
41
  curl -fsSL \
38
42
  https://raw.githubusercontent.com/pertrai1/agent-directives/main/templates/AGENTS.md \
@@ -47,7 +51,7 @@ After installation, open the root instruction file and:
47
51
 
48
52
  1. Fill in the project-specific placeholders.
49
53
  2. Keep `directives/adaptive-routing.md` as the first directive the agent loads.
50
- 3. Delete directives or skills your team does not want, then remove matching rows
54
+ 3. Delete directives, skills, or rules your team does not want, then remove matching rows
51
55
  from the root instruction file.
52
56
  4. Run the check command for your target tool:
53
57
 
@@ -81,14 +85,17 @@ npx agent-directives list --required # Only required e
81
85
  npx agent-directives list --category review
82
86
  npx agent-directives list --tool cursor
83
87
  npx agent-directives list --type skill
88
+ npx agent-directives list --type rule
84
89
 
85
90
  npx agent-directives add code-reviewer --tool claude
91
+ npx agent-directives add angular-components-and-templates --tool claude
86
92
  npx agent-directives add code-reviewer --tool claude --force
87
93
 
88
94
  npx agent-directives check --tool codex
89
95
  npx agent-directives context-audit --tool codex --required
90
96
  npx agent-directives context-audit --tool codex --required --max-tokens 12000
91
97
  npx agent-directives sync --tool claude --yes
98
+ npx agent-directives sync --tool claude --yes --rules auto
92
99
  npx agent-directives sync --tool claude --force
93
100
  ```
94
101
 
@@ -101,7 +108,7 @@ npx agent-directives context-audit --tool codex --required
101
108
  npx agent-directives context-audit --tool claude --max-tokens 20000
102
109
  ```
103
110
 
104
- The estimate uses a simple `characters / 4` heuristic and reports total tokens, required vs optional counts, and the largest directive/skill files. With `--max-tokens`, the command exits non-zero when the selected entries exceed the budget, making it usable in CI.
111
+ The estimate uses a simple `characters / 4` heuristic and reports total tokens, required vs optional counts, and the largest directive/skill/rule files. With `--max-tokens`, the command exits non-zero when the selected entries exceed the budget, making it usable in CI.
105
112
 
106
113
  ### Tool auto-detection
107
114
 
@@ -119,8 +126,8 @@ Pass `--tool` explicitly when auto-detection is ambiguous or wrong.
119
126
  ### Install layout
120
127
 
121
128
  For `claude`, `copilot`, and `codex`, the CLI preserves the source layout — each
122
- entry is written to its declared path (`directives/<name>.md` or
123
- `skills/<name>/SKILL.md`) relative to the current working directory. The root
129
+ entry is written to its declared path (`directives/<name>.md`,
130
+ `skills/<name>/SKILL.md`, or `rules/<category>/<name>.md`) relative to the current working directory. The root
124
131
  instruction file is left to you so existing project instructions are not
125
132
  accidentally overwritten.
126
133
 
@@ -153,15 +160,15 @@ Releases use Changesets and GitHub Actions, matching the release flow used by
153
160
 
154
161
  The package is published to npm. Future releases require npm trusted publishing for this repository/package (or equivalent npm automation credentials) so the workflow can publish with provenance. The workflow uses `id-token: write` and `npm publish --provenance`.
155
162
 
156
- ## Directives vs Skills
163
+ ## Directives vs Skills vs Rules
157
164
 
158
- | | Directive | Skill |
159
- |---|---|---|
160
- | **Nature** | Rule you follow | Persona you adopt |
161
- | **When** | At a workflow phase | For a task type |
162
- | **Output** | Constrained behavior | Structured findings |
163
- | **Tone** | "Never do X" / "Always do Y" | "You are a specialist in..." |
164
- | **Format** | Rules + forbidden patterns table | Frontmatter + review process + output format |
165
+ | | Directive | Skill | Rule |
166
+ |---|---|---|---|
167
+ | **Nature** | Workflow protocol you follow | Persona/process you adopt | Stack or project standard you obey |
168
+ | **When** | At a workflow phase | For a task type | When touched files or detected stack match |
169
+ | **Output** | Constrained behavior | Structured findings | Implementation/review constraints |
170
+ | **Tone** | "Never do X" / "Always do Y" | "You are a specialist in..." | "For this stack, prefer/avoid X" |
171
+ | **Format** | Rules + forbidden patterns table | Frontmatter + review process + output format | Frontmatter + load triggers + compact standards/evidence |
165
172
 
166
173
  ## Directives
167
174
 
@@ -252,6 +259,21 @@ Durable decision capture at task completion. Four-condition write criteria, YAML
252
259
  frontmatter schema for retrieval, progressive-disclosure workflow, and five
253
260
  required sections (Title, Context, Decision, Rejected Alternatives, Consequences).
254
261
 
262
+
263
+ ## Rules
264
+
265
+ Rules are lazy-loaded stack or project standards. They constrain implementation and review without changing the workflow path. Install them explicitly with `agent-directives add`, by category with interactive `sync`, or by detected stack with `sync --rules auto`.
266
+
267
+ ### Angular Rules (`rules/angular/*.md`)
268
+
269
+ The first rule pack covers Angular projects detected by `angular.json` or `@angular/core` in `package.json`:
270
+
271
+ - `rules/angular/project-structure.md` — Angular workspace, source-root, and project-structure standards
272
+ - `rules/angular/components-and-templates.md` — component, template, accessibility, and typed UI-change standards
273
+ - `rules/angular/testing.md` — Angular component/service testing standards
274
+
275
+ Do not load every rule by default. The root instructions and adaptive router should list selected rule files separately from directives and skills.
276
+
255
277
  ## Skills
256
278
 
257
279
  ### Code Reviewer (`skills/code-reviewer/SKILL.md`)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: adaptive-routing
3
3
  description: Selects the lightest safe workflow path, relevant directives/skills, and handoff requirements based on task intent, risk, and touched surfaces.
4
- version: 1.3.0
4
+ version: 1.6.0
5
5
  required: true
6
6
  category: workflow
7
7
  tools:
@@ -59,6 +59,7 @@ Before major edits, output a short route decision:
59
59
  - Risk: <low | medium | high> with reason
60
60
  - Required directives: <paths>
61
61
  - Required skills: <paths, if any>
62
+ - Selected rules: <rule paths, if any>
62
63
  - Evidence required: <tests/checks/proofs>
63
64
  - Handoff required: <yes/no and why>
64
65
  - Confirmation needed: <yes/no and why>
@@ -122,6 +123,45 @@ If no row matches, state that no specialist skill is required.
122
123
 
123
124
  ---
124
125
 
126
+
127
+ ## Rule Selection
128
+
129
+ After selecting the workflow path and skills, select stack or project rules only
130
+ when they match detected project evidence or touched files. Rules constrain the
131
+ work but do not replace directives or skills.
132
+
133
+ - Treat `rules/` entries as lazy-loaded standards, not always-loaded context.
134
+ - Load framework rules when project evidence matches, such as `angular.json` or
135
+ `@angular/core` for Angular, and the task touches relevant framework files.
136
+ - Load file-scoped rules when touched paths match their `applies_to` frontmatter.
137
+ - List selected rule files separately from directives and skills in route output.
138
+ - Do not load unrelated framework rule packs. Project-local instructions override
139
+ rule-pack guidance when they conflict.
140
+
141
+ ### Selecting rules by discovery
142
+
143
+ Do not maintain a per-rule routing table in this directive. Rule packs grow, and
144
+ this directive loads on every task; an inline catalog would put every rule pack's
145
+ metadata in always-loaded context. Discover matching rules on demand instead:
146
+
147
+ 1. **Detect the stack** from project evidence. For example, `angular.json` or an
148
+ `@angular/core` dependency selects the `angular` pack.
149
+ 2. **Open the rule index.** Each rule entry in `manifest.json` carries `category`
150
+ (the pack), `description` (what it governs), and `applies_to` (the file globs
151
+ it scopes to). The `rules/<pack>/` directory holds the same entries on disk;
152
+ read a rule's frontmatter for the authoritative scope.
153
+ 3. **Match before loading.** Load a rule only when its `applies_to` globs match a
154
+ file you will touch *and* its `description` is relevant to what the task
155
+ actually changes. A glob match alone is not enough — editing a
156
+ `*.component.ts` file does not pull in the security rule unless the task
157
+ involves untrusted input, HTTP, secrets, or SSR.
158
+ 4. **Skip absent packs.** Do not load a pack whose evidence is missing, and do
159
+ not load a whole pack by default.
160
+
161
+ The only pack today is `rules/angular/`.
162
+
163
+ ---
164
+
125
165
  ## Workflow Paths
126
166
 
127
167
  ### Light Path
@@ -331,7 +371,7 @@ classification and avoid making the current change worse.
331
371
 
332
372
  | Pattern | Why Forbidden |
333
373
  | --- | --- |
334
- | Loading every directive by default | Wastes context and creates compliance theater |
374
+ | Loading every directive or rule by default | Wastes context and creates compliance theater |
335
375
  | Using Light Path for behavior or bug fixes | Skips necessary proof |
336
376
  | Treating "quick" as permission to skip safety | Risk depends on impact, not wording |
337
377
  | Producing boilerplate verification with no evidence | Ritual is not proof |
package/dist/cli.js CHANGED
@@ -5,13 +5,12 @@ import { Command } from 'commander';
5
5
  import { buildContextAudit, renderContextAudit } from './context-audit.js';
6
6
  import { filterEntries, findEntry, loadManifest, packageRoot } from './manifest.js';
7
7
  import { installEntry, isEntryInstalled } from './install.js';
8
+ import { renderEntryList } from './renderEntryList.js';
8
9
  import { selectMultiple } from './prompt.js';
10
+ import { parseRuleCategories } from './rules.js';
9
11
  import { KNOWN_TOOLS, detectTool, isTool } from './targets.js';
10
12
  const pkg = JSON.parse(readFileSync(join(packageRoot, 'package.json'), 'utf8'));
11
13
  const DECIMAL_RADIX = 10;
12
- const MIN_UNDERLINE_WIDTH = 4;
13
- const ID_COLUMN_WIDTH = 34;
14
- const TYPE_COLUMN_WIDTH = 10;
15
14
  function resolveTool(provided) {
16
15
  if (provided) {
17
16
  if (!isTool(provided)) {
@@ -57,11 +56,14 @@ function parseIntegerOption(value, opts) {
57
56
  const program = new Command();
58
57
  program
59
58
  .name('agent-directives')
60
- .description('Install agent directives and skills into your project')
59
+ .description('Install agent directives, skills, and rules into your project')
61
60
  .version(pkg.version);
61
+ function isManifestEntryType(value) {
62
+ return value === 'directive' || value === 'skill' || value === 'rule';
63
+ }
62
64
  function validateListOptions(opts) {
63
- if (opts.type && opts.type !== 'directive' && opts.type !== 'skill') {
64
- console.error(`Invalid --type '${opts.type}'. Expected 'directive' or 'skill'.`);
65
+ if (opts.type && !isManifestEntryType(opts.type)) {
66
+ console.error(`Invalid --type '${opts.type}'. Expected 'directive', 'skill', or 'rule'.`);
65
67
  process.exit(1);
66
68
  }
67
69
  if (opts.tool && !isTool(opts.tool)) {
@@ -69,52 +71,67 @@ function validateListOptions(opts) {
69
71
  process.exit(1);
70
72
  }
71
73
  }
72
- function groupByCategory(entries) {
73
- const byCategory = new Map();
74
+ function applyEntries(entries, opts) {
74
75
  for (const entry of entries) {
75
- const bucket = byCategory.get(entry.category) ?? [];
76
- bucket.push(entry);
77
- byCategory.set(entry.category, bucket);
76
+ const result = installEntry(entry, { cwd: opts.cwd, tool: opts.tool, force: opts.force });
77
+ reportInstall(entry, result);
78
+ if (result.status === 'installed')
79
+ opts.summary.installed += 1;
80
+ else if (result.status === 'skipped-identical')
81
+ opts.summary.identical += 1;
82
+ else
83
+ opts.summary.conflict += 1;
78
84
  }
79
- return byCategory;
80
85
  }
81
- function printCategory(category, entries) {
82
- console.log(`\n${category}`);
83
- console.log(''.repeat(Math.max(category.length, MIN_UNDERLINE_WIDTH)));
84
- for (const entry of entries.sort((a, b) => a.id.localeCompare(b.id))) {
85
- const marker = entry.required ? '★' : ' ';
86
- console.log(` ${marker} ${entry.id.padEnd(ID_COLUMN_WIDTH)} ${entry.type.padEnd(TYPE_COLUMN_WIDTH)} ${entry.description}`);
86
+ function applySelectedRules(opts) {
87
+ const { entries, categories, apply, mode } = opts;
88
+ if (!mode || mode === 'none')
89
+ return;
90
+ if (entries.length === 0) {
91
+ console.log(`\nNo matching rule entries selected${mode === 'auto' ? ' by auto-detection' : ''}.`);
92
+ return;
87
93
  }
94
+ console.log(`\nInstalling ${entries.length} selected rule entr${entries.length === 1 ? 'y' : 'ies'} (${categories.join(', ')})...`);
95
+ apply(entries);
96
+ }
97
+ async function promptForOptionalEntries(entries, apply) {
98
+ if (entries.length === 0)
99
+ return;
100
+ const categories = Array.from(new Set(entries.map((entry) => entry.category))).sort();
101
+ const chosen = await selectMultiple('\nOptional categories:', categories);
102
+ const toInstall = entries.filter((entry) => chosen.includes(entry.category));
103
+ if (toInstall.length === 0)
104
+ return;
105
+ console.log(`\nInstalling ${toInstall.length} optional entr${toInstall.length === 1 ? 'y' : 'ies'}...`);
106
+ void apply(toInstall);
88
107
  }
89
108
  program
90
109
  .command('list')
91
- .description('List available directives and skills')
110
+ .description('List available directives, skills, and rules')
92
111
  .option('-c, --category <category>', 'Filter by category')
93
112
  .option('-r, --required', 'Only show required entries')
94
113
  .option('-t, --tool <tool>', `Filter by tool (${KNOWN_TOOLS.join(', ')})`)
95
- .option('--type <type>', 'Filter by type (directive or skill)')
114
+ .option('--type <type>', 'Filter by type (directive, skill, or rule)')
96
115
  .action((opts) => {
97
116
  validateListOptions(opts);
98
117
  const manifest = loadManifest();
118
+ const typeFilter = opts.type && isManifestEntryType(opts.type) ? opts.type : undefined;
99
119
  const filtered = filterEntries(manifest.entries, {
100
120
  category: opts.category,
101
121
  required: opts.required,
102
122
  tool: opts.tool,
103
- type: opts.type,
123
+ type: typeFilter,
104
124
  });
105
125
  if (filtered.length === 0) {
106
126
  console.log('No entries match the filters.');
107
127
  return;
108
128
  }
109
- const byCategory = groupByCategory(filtered);
110
- for (const [category, entries] of [...byCategory.entries()].sort(([a], [b]) => a.localeCompare(b))) {
111
- printCategory(category, entries);
112
- }
129
+ console.log(renderEntryList(filtered));
113
130
  console.log(`\n${filtered.length} entr${filtered.length === 1 ? 'y' : 'ies'} (★ = required)`);
114
131
  });
115
132
  program
116
133
  .command('context-audit')
117
- .description('Estimate prompt weight for directives and skills')
134
+ .description('Estimate prompt weight for directives, skills, and rules')
118
135
  .option('-t, --tool <tool>', `Filter by target tool (${KNOWN_TOOLS.join(', ')})`)
119
136
  .option('-r, --required', 'Only include always-loaded required entries')
120
137
  .option('--max-tokens <tokens>', 'Fail when the estimated token count exceeds this budget')
@@ -143,7 +160,7 @@ program
143
160
  });
144
161
  program
145
162
  .command('add <id>')
146
- .description('Install a single directive or skill into the current project')
163
+ .description('Install a single directive, skill, or rule into the current project')
147
164
  .option('-t, --tool <tool>', `Target tool (${KNOWN_TOOLS.join(', ')})`)
148
165
  .option('-f, --force', 'Overwrite an existing file with different content')
149
166
  .action((id, opts) => {
@@ -168,7 +185,7 @@ program
168
185
  });
169
186
  program
170
187
  .command('check')
171
- .description('Report missing required directives and skills for the target tool')
188
+ .description('Report missing required directives, skills, and rules for the target tool')
172
189
  .option('-t, --tool <tool>', `Target tool (${KNOWN_TOOLS.join(', ')})`)
173
190
  .action((opts) => {
174
191
  const manifest = loadManifest();
@@ -192,35 +209,23 @@ program
192
209
  .option('-t, --tool <tool>', `Target tool (${KNOWN_TOOLS.join(', ')})`)
193
210
  .option('-y, --yes', 'Skip prompts; install required entries only')
194
211
  .option('-f, --force', 'Overwrite files with different content')
212
+ .option('--rules <mode>', "Install rule categories: 'auto', 'none', or comma-separated categories such as 'angular'", 'none')
195
213
  .action(async (opts) => {
196
214
  const manifest = loadManifest();
197
215
  const tool = resolveTool(opts.tool);
198
216
  const required = filterEntries(manifest.entries, { required: true, tool });
199
217
  const optional = filterEntries(manifest.entries, { required: false, tool });
218
+ const requestedRuleCategories = parseRuleCategories(opts.rules, process.cwd());
219
+ const selectedRules = optional.filter((entry) => entry.type === 'rule' && requestedRuleCategories.includes(entry.category));
220
+ const promptableOptional = optional.filter((entry) => entry.type !== 'rule' || !requestedRuleCategories.includes(entry.category));
200
221
  console.log(`Tool: ${tool}`);
201
222
  console.log(`Installing ${required.length} required entr${required.length === 1 ? 'y' : 'ies'}...`);
202
223
  const summary = { installed: 0, identical: 0, conflict: 0 };
203
- const apply = (entries) => {
204
- for (const entry of entries) {
205
- const result = installEntry(entry, { cwd: process.cwd(), tool, force: opts.force });
206
- reportInstall(entry, result);
207
- if (result.status === 'installed')
208
- summary.installed += 1;
209
- else if (result.status === 'skipped-identical')
210
- summary.identical += 1;
211
- else
212
- summary.conflict += 1;
213
- }
214
- };
224
+ const apply = (entries) => applyEntries(entries, { cwd: process.cwd(), tool, force: opts.force, summary });
215
225
  apply(required);
216
- if (!opts.yes && optional.length > 0) {
217
- const categories = [...new Set(optional.map((entry) => entry.category))].sort();
218
- const chosen = await selectMultiple('\nOptional categories:', categories);
219
- const toInstall = optional.filter((entry) => chosen.includes(entry.category));
220
- if (toInstall.length > 0) {
221
- console.log(`\nInstalling ${toInstall.length} optional entr${toInstall.length === 1 ? 'y' : 'ies'}...`);
222
- apply(toInstall);
223
- }
226
+ applySelectedRules({ entries: selectedRules, categories: requestedRuleCategories, apply, mode: opts.rules });
227
+ if (!opts.yes) {
228
+ await promptForOptionalEntries(promptableOptional, apply);
224
229
  }
225
230
  console.log(`\nSummary: ${summary.installed} installed, ${summary.identical} already up-to-date, ${summary.conflict} conflicts`);
226
231
  if (summary.conflict > 0 && !opts.force) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAA8C,MAAM,eAAe,CAAC;AAChI,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAsB,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAa,MAAM,cAAc,CAAC;AAE1E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;AAEvG,MAAM,aAAa,GAAG,EAAE,CAAC;AAGzB,SAAS,WAAW,CAAC,QAAiB;IACpC,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,iBAAiB,QAAQ,uBAAuB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,2BAA2B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAAC,KAAoB,EAAE,MAAqB;IAChE,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,WAAW;YACd,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,MAAM;QACR,KAAK,mBAAmB;YACtB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,EAAE,uBAAuB,CAAC,CAAC;YACpD,MAAM;QACR,KAAK,kBAAkB;YACrB,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,eAAe,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;YAC5D,MAAM;IACV,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,IAAuC;IAChF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,KAAK,yBAAyB,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,OAAO,EAAE,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,KAAK,6BAA6B,OAAO,GAAG,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,kBAAkB,CAAC;KACxB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,CAAC;AACxE,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAsC;IACjE,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,8CAA8C,CAAC,CAAC;QAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,uBAAuB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAwB,EAAE,IAA2E;IACzH,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1F,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;YAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;aAC1D,IAAI,MAAM,CAAC,MAAM,KAAK,mBAAmB;YAAE,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;;YACvE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAkH;IAC5I,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAClD,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClG,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,MAAM,sBAAsB,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpI,KAAK,CAAC,OAAO,CAAC,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAAwB,EAAE,KAAyC;IACzG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACnC,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,MAAM,iBAAiB,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IACxG,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;AACxB,CAAC;AAED,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;KACzD,MAAM,CAAC,gBAAgB,EAAE,4BAA4B,CAAC;KACtD,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KACzE,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;KACrE,MAAM,CAAC,CAAC,IAA6E,EAAE,EAAE;IACxF,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE;QAC/C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,UAAU;KACjB,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,MAAM,QAAQ,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC;AAChG,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KAChF,MAAM,CAAC,gBAAgB,EAAE,6CAA6C,CAAC;KACvE,MAAM,CAAC,uBAAuB,EAAE,yDAAyD,CAAC;KAC1F,MAAM,CAAC,mBAAmB,EAAE,mCAAmC,EAAE,IAAI,CAAC;KACtE,MAAM,CAAC,CAAC,IAAiF,EAAE,EAAE;IAC5F,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,IAAI,uBAAuB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACtI,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAE7H,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,YAAY,EAAE,IAAI,CAAC,QAAQ;QAC3B,SAAS;QACT,OAAO;KACR,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QACrI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,qEAAqE,CAAC;KAClF,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KACtE,MAAM,CAAC,aAAa,EAAE,mDAAmD,CAAC;KAC1E,MAAM,CAAC,CAAC,EAAU,EAAE,IAAwC,EAAE,EAAE;IAC/D,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,4BAA4B,IAAI,gBAAgB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACpF,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KACtE,MAAM,CAAC,CAAC,IAAuB,EAAE,EAAE;IAClC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACnG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,MAAM,uCAAuC,IAAI,GAAG,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,MAAM,OAAO,QAAQ,CAAC,MAAM,yBAAyB,IAAI,GAAG,CAAC,CAAC;IACjG,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,uCAAuC,IAAI,oBAAoB,CAAC,CAAC;IAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;KACtE,MAAM,CAAC,WAAW,EAAE,6CAA6C,CAAC;KAClE,MAAM,CAAC,aAAa,EAAE,wCAAwC,CAAC;KAC/D,MAAM,CAAC,gBAAgB,EAAE,0FAA0F,EAAE,MAAM,CAAC;KAC5H,MAAM,CAAC,KAAK,EAAE,IAAuE,EAAE,EAAE;IACxF,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,MAAM,uBAAuB,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/E,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5H,MAAM,kBAAkB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAElI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,MAAM,iBAAiB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IAEpG,MAAM,OAAO,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC5D,MAAM,KAAK,GAAG,CAAC,OAAwB,EAAQ,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAElI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEhB,kBAAkB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAE7G,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,wBAAwB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,SAAS,eAAe,OAAO,CAAC,SAAS,wBAAwB,OAAO,CAAC,QAAQ,YAAY,CAAC,CAAC;IACjI,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -1,12 +1,14 @@
1
+ export type ManifestEntryType = 'directive' | 'skill' | 'rule';
1
2
  export interface ManifestEntry {
2
3
  id: string;
3
- type: 'directive' | 'skill';
4
+ type: ManifestEntryType;
4
5
  path: string;
5
6
  description: string;
6
7
  version: string;
7
8
  required: boolean;
8
9
  category: string;
9
10
  tools: string[];
11
+ applies_to?: string[];
10
12
  }
11
13
  export interface Manifest {
12
14
  version: string;
@@ -16,7 +18,7 @@ export interface FilterOptions {
16
18
  category?: string;
17
19
  required?: boolean;
18
20
  tool?: string;
19
- type?: 'directive' | 'skill';
21
+ type?: ManifestEntryType;
20
22
  }
21
23
  export declare const packageRoot: string;
22
24
  export declare function loadManifest(): Manifest;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC;CAC9B;AAGD,eAAO,MAAM,WAAW,QAAwB,CAAC;AAEjD,wBAAgB,YAAY,IAAI,QAAQ,CAMvC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,aAAa,EAAE,CAQ5F;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEzF"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAGD,eAAO,MAAM,WAAW,QAAwB,CAAC;AAEjD,wBAAgB,YAAY,IAAI,QAAQ,CAMvC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,aAAa,EAAE,CAQ5F;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEzF"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAyBzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEjD,MAAM,UAAU,YAAY;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,0CAA0C,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAa,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAwB,EAAE,IAAmB;IACzE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpE,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAClF,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAChE,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAwB,EAAE,EAAU;IAC5D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA4BzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEjD,MAAM,UAAU,YAAY;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,0CAA0C,CAAC,CAAC;IACxG,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAa,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAwB,EAAE,IAAmB;IACzE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpE,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAClF,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAChE,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAwB,EAAE,EAAU;IAC5D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ManifestEntry } from './manifest.js';
2
+ export declare function renderEntryList(entries: ManifestEntry[]): string;
3
+ //# sourceMappingURL=renderEntryList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderEntryList.d.ts","sourceRoot":"","sources":["../src/renderEntryList.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMnD,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAMhE"}
@@ -0,0 +1,28 @@
1
+ const MIN_UNDERLINE_WIDTH = 4;
2
+ const ID_COLUMN_WIDTH = 34;
3
+ const TYPE_COLUMN_WIDTH = 10;
4
+ export function renderEntryList(entries) {
5
+ const byCategory = groupByCategory(entries);
6
+ return Array.from(byCategory.entries())
7
+ .sort(([a], [b]) => a.localeCompare(b))
8
+ .map(([category, categoryEntries]) => renderCategory(category, categoryEntries))
9
+ .join('\n');
10
+ }
11
+ function groupByCategory(entries) {
12
+ const byCategory = new Map();
13
+ for (const entry of entries) {
14
+ const bucket = byCategory.get(entry.category) ?? [];
15
+ bucket.push(entry);
16
+ byCategory.set(entry.category, bucket);
17
+ }
18
+ return byCategory;
19
+ }
20
+ function renderCategory(category, entries) {
21
+ const lines = [`\n${category}`, '─'.repeat(Math.max(category.length, MIN_UNDERLINE_WIDTH))];
22
+ for (const entry of entries.sort((a, b) => a.id.localeCompare(b.id))) {
23
+ const marker = entry.required ? '★' : ' ';
24
+ lines.push(` ${marker} ${entry.id.padEnd(ID_COLUMN_WIDTH)} ${entry.type.padEnd(TYPE_COLUMN_WIDTH)} ${entry.description}`);
25
+ }
26
+ return lines.join('\n');
27
+ }
28
+ //# sourceMappingURL=renderEntryList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderEntryList.js","sourceRoot":"","sources":["../src/renderEntryList.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,UAAU,eAAe,CAAC,OAAwB;IACtD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;SAC/E,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,OAAwB;IAC/C,MAAM,UAAU,GAAG,IAAI,GAAG,EAA2B,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,OAAwB;IAChE,MAAM,KAAK,GAAG,CAAC,KAAK,QAAQ,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC5F,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7H,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function detectRuleCategories(cwd: string): string[];
2
+ export declare function parseRuleCategories(value: string | undefined, cwd: string): string[];
3
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAa1D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAIpF"}
package/dist/rules.js ADDED
@@ -0,0 +1,31 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ export function detectRuleCategories(cwd) {
4
+ const categories = new Set();
5
+ if (existsSync(join(cwd, 'angular.json')))
6
+ categories.add('angular');
7
+ const packageJsonPath = join(cwd, 'package.json');
8
+ if (existsSync(packageJsonPath)) {
9
+ const pkg = readPackageJson(packageJsonPath);
10
+ if (pkg?.dependencies?.['@angular/core'] || pkg?.devDependencies?.['@angular/core']) {
11
+ categories.add('angular');
12
+ }
13
+ }
14
+ return Array.from(categories).sort();
15
+ }
16
+ export function parseRuleCategories(value, cwd) {
17
+ if (!value || value === 'none')
18
+ return [];
19
+ if (value === 'auto')
20
+ return detectRuleCategories(cwd);
21
+ return Array.from(new Set(value.split(',').map((category) => category.trim()).filter(Boolean))).sort();
22
+ }
23
+ function readPackageJson(path) {
24
+ try {
25
+ return JSON.parse(readFileSync(path, 'utf8'));
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAErE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;QAC7C,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,eAAe,CAAC,IAAI,GAAG,EAAE,eAAe,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC;YACpF,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAyB,EAAE,GAAW;IACxE,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IAC1C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzG,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAG3C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}