@ethlete/agent-rules 0.1.0-next.0 → 0.1.0-next.1

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 (46) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +87 -15
  3. package/content/hooks/context-warning.py +215 -0
  4. package/package.json +1 -1
  5. package/src/index.js +12 -4
  6. package/src/index.js.map +1 -1
  7. package/src/lib/config.d.ts +35 -2
  8. package/src/lib/config.js +30 -8
  9. package/src/lib/config.js.map +1 -1
  10. package/src/lib/index.d.ts +1 -0
  11. package/src/lib/index.js +1 -0
  12. package/src/lib/index.js.map +1 -1
  13. package/src/lib/migrate.d.ts +6 -0
  14. package/src/lib/migrate.js +155 -0
  15. package/src/lib/migrate.js.map +1 -0
  16. package/src/lib/owned-paths.js +4 -1
  17. package/src/lib/owned-paths.js.map +1 -1
  18. package/src/lib/plan.d.ts +4 -0
  19. package/src/lib/plan.js +65 -6
  20. package/src/lib/plan.js.map +1 -1
  21. package/src/lib/sync.js +8 -2
  22. package/src/lib/sync.js.map +1 -1
  23. package/src/lib/targets/agents-skills.d.ts +8 -0
  24. package/src/lib/targets/agents-skills.js +18 -0
  25. package/src/lib/targets/agents-skills.js.map +1 -0
  26. package/src/lib/targets/claude-hooks.d.ts +33 -0
  27. package/src/lib/targets/claude-hooks.js +97 -0
  28. package/src/lib/targets/claude-hooks.js.map +1 -0
  29. package/src/lib/targets/claude.d.ts +3 -1
  30. package/src/lib/targets/claude.js +13 -20
  31. package/src/lib/targets/claude.js.map +1 -1
  32. package/src/lib/targets/codex.d.ts +5 -3
  33. package/src/lib/targets/codex.js +8 -7
  34. package/src/lib/targets/codex.js.map +1 -1
  35. package/src/lib/targets/copilot.d.ts +3 -3
  36. package/src/lib/targets/copilot.js +5 -28
  37. package/src/lib/targets/copilot.js.map +1 -1
  38. package/src/lib/targets/cursor.d.ts +3 -3
  39. package/src/lib/targets/cursor.js +6 -11
  40. package/src/lib/targets/cursor.js.map +1 -1
  41. package/src/lib/targets/shared.d.ts +22 -12
  42. package/src/lib/targets/shared.js +32 -15
  43. package/src/lib/targets/shared.js.map +1 -1
  44. package/src/lib/targets/neutral.d.ts +0 -8
  45. package/src/lib/targets/neutral.js +0 -29
  46. package/src/lib/targets/neutral.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/claude.ts"],"names":[],"mappings":";;;AAAA,sCAAwC;AACxC,qCAAuH;AAEvH,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,0BAA0B,IAAI,EAAE,CAAC;AAEpE,MAAM,SAAS,GAAG,CAAC,MAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE3F;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,OAAoB,EAAiB,EAAE;IAChE,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC;QACtB,OAAO;QACP,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,IAAI,YAAY;QACpD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,QAAQ,iCAAiC;KAC5E,CAAC,CAAC;IACH,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QACzC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpF,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,yBAAyB,IAAI,KAAK;YACxC,QAAQ,EAAE,IAAA,iBAAQ,EAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,MAAM,WAAW,GAAG;YAClB,KAAK;YACL,iBAAiB,IAAI,EAAE;YACvB,gBAAgB,IAAA,mBAAU,EAAC,IAAA,oBAAW,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;YAC5D,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW;YAClC,QAAQ,EAAE,IAAA,iBAAQ,EAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;SAC1E,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,sBAAa,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1G,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AArCW,QAAA,UAAU,cAqCrB"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/claude.ts"],"names":[],"mappings":";;;AAAA,sCAAwC;AACxC,qCAA4F;AAE5F,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,0BAA0B,IAAI,EAAE,CAAC;AAEpE,MAAM,SAAS,GAAG,CAAC,MAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE3F;;;;;;GAMG;AACI,MAAM,UAAU,GAAG,CAAC,OAAoB,EAAiB,EAAE;IAChE,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC;QACtB,OAAO;QACP,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,IAAI,YAAY;QACpD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,QAAQ,iCAAiC;KAC5E,CAAC,CAAC;IACH,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YACzC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAEpF,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,yBAAyB,IAAI,KAAK;gBACxC,QAAQ,EAAE,IAAA,iBAAQ,EAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;aAC1E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,oBAAW,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AA1BW,QAAA,UAAU,cA0BrB"}
@@ -1,9 +1,11 @@
1
1
  import { EmitContext, EmittedFile } from './shared';
2
2
  export declare const CODEX_FILE = "AGENTS.md";
3
3
  /**
4
- * `AGENTS.md` supports neither frontmatter nor includes, so the always-loaded rules are inlined and
5
- * the on-demand skills become a manifest of paths into `.agents/ethlete/` (emitted separately by the
6
- * neutral target). Everything outside the marker block is left as the repo wrote it.
4
+ * The always-loaded rules are inlined into the `AGENTS.md` marker block — layered `AGENTS.md`
5
+ * files are Codex's rules mechanism. Skills are emitted as real skills under `.agents/skills/`
6
+ * (see `emitAgentsSkills`) and self-describe through their frontmatter, so the block carries only
7
+ * a two-line hint instead of repeating every description into each session's context. Everything
8
+ * outside the marker block is left as the repo wrote it.
7
9
  */
8
10
  export declare const emitCodex: (options: {
9
11
  context: EmitContext;
@@ -5,18 +5,19 @@ const render_1 = require("../render");
5
5
  const shared_1 = require("./shared");
6
6
  exports.CODEX_FILE = 'AGENTS.md';
7
7
  /**
8
- * `AGENTS.md` supports neither frontmatter nor includes, so the always-loaded rules are inlined and
9
- * the on-demand skills become a manifest of paths into `.agents/ethlete/` (emitted separately by the
10
- * neutral target). Everything outside the marker block is left as the repo wrote it.
8
+ * The always-loaded rules are inlined into the `AGENTS.md` marker block — layered `AGENTS.md`
9
+ * files are Codex's rules mechanism. Skills are emitted as real skills under `.agents/skills/`
10
+ * (see `emitAgentsSkills`) and self-describe through their frontmatter, so the block carries only
11
+ * a two-line hint instead of repeating every description into each session's context. Everything
12
+ * outside the marker block is left as the repo wrote it.
11
13
  */
12
14
  const emitCodex = (options) => {
13
15
  const { context, existing } = options;
14
- const sections = context.rules.map((item) => (0, shared_1.body)({ item, context, links: (0, shared_1.neutralLinks)(context) }));
16
+ const sections = context.rules.map((item) => (0, shared_1.body)({ item, context, links: (0, shared_1.agentsSkillsLinks)(context) }));
15
17
  if (context.skills.length > 0) {
16
18
  sections.push([
17
- '## Ethlete reference docs',
18
- 'Read the matching file before starting that kind of work — do not work from memory.',
19
- (0, shared_1.pointerTable)({ skills: context.skills, context, pathFor: shared_1.neutralBodyPath }),
19
+ '## Ethlete skills',
20
+ "On-demand guides live in `.agents/skills/ethlete-*/SKILL.md`; each one's frontmatter says when to read it. If your agent does not discover skills on its own, list that directory and read the matching guide before starting that kind of work — do not work from memory.",
20
21
  ].join('\n\n'));
21
22
  }
22
23
  const block = (0, shared_1.document)([(0, render_1.buildBanner)(context.version), ...sections]).trimEnd();
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/codex.ts"],"names":[],"mappings":";;;AAAA,sCAA4D;AAC5D,qCAAiH;AAEpG,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC;;;;GAIG;AACI,MAAM,SAAS,GAAG,CAAC,OAAmD,EAAiB,EAAE;IAC9F,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAA,qBAAY,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CACX;YACE,2BAA2B;YAC3B,qFAAqF;YACrF,IAAA,qBAAY,EAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAe,EAAE,CAAC;SAC5E,CAAC,IAAI,CAAC,MAAM,CAAC,CACf,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,iBAAQ,EAAC,CAAC,IAAA,oBAAW,EAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAE9E,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAU,EAAE,QAAQ,EAAE,IAAA,2BAAkB,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC,CAAC;AAjBW,QAAA,SAAS,aAiBpB"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/codex.ts"],"names":[],"mappings":";;;AAAA,sCAA4D;AAC5D,qCAAuF;AAE1E,QAAA,UAAU,GAAG,WAAW,CAAC;AAEtC;;;;;;GAMG;AACI,MAAM,SAAS,GAAG,CAAC,OAAmD,EAAiB,EAAE;IAC9F,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAA,0BAAiB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzG,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CACX;YACE,mBAAmB;YACnB,4QAA4Q;SAC7Q,CAAC,IAAI,CAAC,MAAM,CAAC,CACf,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,iBAAQ,EAAC,CAAC,IAAA,oBAAW,EAAC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAE9E,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAU,EAAE,QAAQ,EAAE,IAAA,2BAAkB,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC,CAAC;AAhBW,QAAA,SAAS,aAgBpB"}
@@ -1,9 +1,9 @@
1
1
  import { EmitContext, EmittedFile } from './shared';
2
2
  export declare const COPILOT_FILE = ".github/copilot-instructions.md";
3
3
  /**
4
- * Copilot can scope an instruction file to a glob but has no way to load one on description alone,
5
- * so a skill with `paths` becomes a real `.instructions.md` and everything else falls back to a
6
- * manifest pointer in the always-loaded file.
4
+ * Always-loaded rules go into the `copilot-instructions.md` marker block. Skills are not mirrored
5
+ * here — Copilot discovers `.agents/skills/` natively, so the old pointer table and the
6
+ * `applyTo`-scoped `.instructions.md` fallback are gone.
7
7
  */
8
8
  export declare const emitCopilot: (options: {
9
9
  context: EmitContext;
@@ -5,39 +5,16 @@ const render_1 = require("../render");
5
5
  const shared_1 = require("./shared");
6
6
  exports.COPILOT_FILE = '.github/copilot-instructions.md';
7
7
  /**
8
- * Copilot can scope an instruction file to a glob but has no way to load one on description alone,
9
- * so a skill with `paths` becomes a real `.instructions.md` and everything else falls back to a
10
- * manifest pointer in the always-loaded file.
8
+ * Always-loaded rules go into the `copilot-instructions.md` marker block. Skills are not mirrored
9
+ * here — Copilot discovers `.agents/skills/` natively, so the old pointer table and the
10
+ * `applyTo`-scoped `.instructions.md` fallback are gone.
11
11
  */
12
12
  const emitCopilot = (options) => {
13
13
  const { context, existing } = options;
14
14
  const banner = (0, render_1.buildBanner)(context.version);
15
- const links = (0, shared_1.makeLinks)({
16
- context,
17
- skill: (name) => `\`${(0, shared_1.neutralBodyPath)(name)}\``,
18
- resource: (target) => `\`${(0, shared_1.neutralResourcePath)(target)}\``,
19
- });
20
- const files = [];
21
- const scoped = context.skills.filter((item) => item.frontmatter.paths.length > 0);
22
- const unscoped = context.skills.filter((item) => item.frontmatter.paths.length === 0);
23
- for (const item of scoped) {
24
- const frontmatter = ['---', `applyTo: ${(0, shared_1.yamlString)(item.frontmatter.paths.join(','))}`, '---'].join('\n');
25
- files.push({
26
- path: `.github/instructions/ethlete-${item.frontmatter.name}.instructions.md`,
27
- contents: (0, shared_1.document)([frontmatter, banner, (0, shared_1.body)({ item, context, links })]),
28
- });
29
- }
30
- const sections = context.rules.map((item) => (0, shared_1.body)({ item, context, links }));
31
- if (unscoped.length > 0) {
32
- sections.push([
33
- '## Ethlete reference docs',
34
- 'Read the matching file before starting that kind of work — do not work from memory.',
35
- (0, shared_1.pointerTable)({ skills: unscoped, context, pathFor: shared_1.neutralBodyPath }),
36
- ].join('\n\n'));
37
- }
15
+ const sections = context.rules.map((item) => (0, shared_1.body)({ item, context, links: (0, shared_1.agentsSkillsLinks)(context) }));
38
16
  const block = (0, shared_1.document)([banner, ...sections]).trimEnd();
39
- files.push({ path: exports.COPILOT_FILE, contents: (0, render_1.replaceMarkedBlock)({ existing, block }) });
40
- return files;
17
+ return [{ path: exports.COPILOT_FILE, contents: (0, render_1.replaceMarkedBlock)({ existing, block }) }];
41
18
  };
42
19
  exports.emitCopilot = emitCopilot;
43
20
  //# sourceMappingURL=copilot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/copilot.ts"],"names":[],"mappings":";;;AAAA,sCAA4D;AAC5D,qCAUkB;AAEL,QAAA,YAAY,GAAG,iCAAiC,CAAC;AAE9D;;;;GAIG;AACI,MAAM,WAAW,GAAG,CAAC,OAAmD,EAAiB,EAAE;IAChG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC;QACtB,OAAO;QACP,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAA,wBAAe,EAAC,IAAI,CAAC,IAAI;QAC/C,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,IAAA,4BAAmB,EAAC,MAAM,CAAC,IAAI;KAC3D,CAAC,CAAC;IACH,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAEtF,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,YAAY,IAAA,mBAAU,EAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1G,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,gCAAgC,IAAI,CAAC,WAAW,CAAC,IAAI,kBAAkB;YAC7E,QAAQ,EAAE,IAAA,iBAAQ,EAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAE7E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CACX;YACE,2BAA2B;YAC3B,qFAAqF;YACrF,IAAA,qBAAY,EAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAe,EAAE,CAAC;SACtE,CAAC,IAAI,CAAC,MAAM,CAAC,CACf,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAA,iBAAQ,EAAC,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAExD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,oBAAY,EAAE,QAAQ,EAAE,IAAA,2BAAkB,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAEtF,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAvCW,QAAA,WAAW,eAuCtB"}
1
+ {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/copilot.ts"],"names":[],"mappings":";;;AAAA,sCAA4D;AAC5D,qCAAuF;AAE1E,QAAA,YAAY,GAAG,iCAAiC,CAAC;AAE9D;;;;GAIG;AACI,MAAM,WAAW,GAAG,CAAC,OAAmD,EAAiB,EAAE;IAChG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAA,0BAAiB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACzG,MAAM,KAAK,GAAG,IAAA,iBAAQ,EAAC,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAExD,OAAO,CAAC,EAAE,IAAI,EAAE,oBAAY,EAAE,QAAQ,EAAE,IAAA,2BAAkB,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AACrF,CAAC,CAAC;AAPW,QAAA,WAAW,eAOtB"}
@@ -1,7 +1,7 @@
1
1
  import { EmitContext, EmittedFile } from './shared';
2
2
  /**
3
- * Cursor has no bundle concept, so a skill's resource files stay in the neutral `.agents/ethlete/`
4
- * tree and the rule points at them. Rules apply always; skills are "agent requested" — Cursor picks
5
- * them from the description, or attaches them automatically when `globs` match the open file.
3
+ * Always-loaded rules become `alwaysApply` `.mdc` files (path-scoped ones via `globs`). Skills are
4
+ * not mirrored here — Cursor discovers them from `.agents/skills/` like every other
5
+ * agentskills.io-aware tool.
6
6
  */
7
7
  export declare const emitCursor: (context: EmitContext) => EmittedFile[];
@@ -4,24 +4,20 @@ exports.emitCursor = void 0;
4
4
  const render_1 = require("../render");
5
5
  const shared_1 = require("./shared");
6
6
  /**
7
- * Cursor has no bundle concept, so a skill's resource files stay in the neutral `.agents/ethlete/`
8
- * tree and the rule points at them. Rules apply always; skills are "agent requested" — Cursor picks
9
- * them from the description, or attaches them automatically when `globs` match the open file.
7
+ * Always-loaded rules become `alwaysApply` `.mdc` files (path-scoped ones via `globs`). Skills are
8
+ * not mirrored here — Cursor discovers them from `.agents/skills/` like every other
9
+ * agentskills.io-aware tool.
10
10
  */
11
11
  const emitCursor = (context) => {
12
12
  const banner = (0, render_1.buildBanner)(context.version);
13
- const links = (0, shared_1.makeLinks)({
14
- context,
15
- skill: (name) => `the **\`ethlete-${name}\`** rule`,
16
- resource: (target) => `\`${(0, shared_1.neutralResourcePath)(target)}\``,
17
- });
18
- const emit = (options) => options.items.map((item) => {
13
+ const links = (0, shared_1.agentsSkillsLinks)(context);
14
+ return context.rules.map((item) => {
19
15
  const { name, paths } = item.frontmatter;
20
16
  const frontmatter = [
21
17
  '---',
22
18
  `description: ${(0, shared_1.yamlString)((0, shared_1.description)({ item, context }))}`,
23
19
  paths.length > 0 ? `globs: ${paths.join(',')}` : 'globs:',
24
- `alwaysApply: ${options.alwaysApply}`,
20
+ 'alwaysApply: true',
25
21
  '---',
26
22
  ].join('\n');
27
23
  return {
@@ -29,7 +25,6 @@ const emitCursor = (context) => {
29
25
  contents: (0, shared_1.document)([frontmatter, banner, (0, shared_1.body)({ item, context, links })]),
30
26
  };
31
27
  });
32
- return [...emit({ items: context.rules, alwaysApply: true }), ...emit({ items: context.skills, alwaysApply: false })];
33
28
  };
34
29
  exports.emitCursor = emitCursor;
35
30
  //# sourceMappingURL=cursor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/cursor.ts"],"names":[],"mappings":";;;AAAA,sCAAwC;AACxC,qCASkB;AAElB;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,OAAoB,EAAiB,EAAE;IAChE,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAA,kBAAS,EAAC;QACtB,OAAO;QACP,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,IAAI,WAAW;QACnD,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,IAAA,4BAAmB,EAAC,MAAM,CAAC,IAAI;KAC3D,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,CAAC,OAA8D,EAAE,EAAE,CAC9E,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QACzC,MAAM,WAAW,GAAG;YAClB,KAAK;YACL,gBAAgB,IAAA,mBAAU,EAAC,IAAA,oBAAW,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;YAC5D,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;YACzD,gBAAgB,OAAO,CAAC,WAAW,EAAE;YACrC,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO;YACL,IAAI,EAAE,yBAAyB,IAAI,MAAM;YACzC,QAAQ,EAAE,IAAA,iBAAQ,EAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;SAC1E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACxH,CAAC,CAAC;AA1BW,QAAA,UAAU,cA0BrB"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/cursor.ts"],"names":[],"mappings":";;;AAAA,sCAAwC;AACxC,qCAAgH;AAEhH;;;;GAIG;AACI,MAAM,UAAU,GAAG,CAAC,OAAoB,EAAiB,EAAE;IAChE,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,CAAC;IAEzC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QACzC,MAAM,WAAW,GAAG;YAClB,KAAK;YACL,gBAAgB,IAAA,mBAAU,EAAC,IAAA,oBAAW,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;YAC5D,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ;YACzD,mBAAmB;YACnB,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO;YACL,IAAI,EAAE,yBAAyB,IAAI,MAAM;YACzC,QAAQ,EAAE,IAAA,iBAAQ,EAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;SAC1E,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAnBW,QAAA,UAAU,cAmBrB"}
@@ -12,13 +12,17 @@ export type EmitContext = {
12
12
  emittedSkills: Set<string>;
13
13
  vars: Record<string, string | string[]>;
14
14
  version: string;
15
+ /**
16
+ * The repo's `CLAUDE.md` is an `@AGENTS.md` import (or symlink), so Claude already receives the
17
+ * rules through the `AGENTS.md` marker block and must not get a second copy in `.claude/rules/`.
18
+ */
19
+ claudeMdImportsAgentsMd: boolean;
20
+ /** Opt-in Claude Code hooks from the config. */
21
+ hooks: string[];
15
22
  };
16
- export declare const NEUTRAL_DIR = ".agents/ethlete";
17
- export declare const neutralBodyPath: (name: string) => string;
18
- export declare const neutralResourcePath: (options: {
19
- skillName: string;
20
- fileName: string;
21
- }) => string;
23
+ export declare const AGENTS_SKILLS_DIR = ".agents/skills";
24
+ export declare const agentsSkillDir: (name: string) => string;
25
+ export declare const agentsSkillPath: (name: string) => string;
22
26
  /**
23
27
  * A guide can be filtered out of a given repo while another still references it. Degrade such a
24
28
  * link to the bare name rather than emitting a path to a file that was never written.
@@ -31,7 +35,7 @@ export declare const makeLinks: (options: {
31
35
  fileName: string;
32
36
  }) => string;
33
37
  }) => LinkResolver;
34
- export declare const neutralLinks: (context: EmitContext) => LinkResolver;
38
+ export declare const agentsSkillsLinks: (context: EmitContext) => LinkResolver;
35
39
  export declare const body: (options: {
36
40
  item: ContentItem;
37
41
  context: EmitContext;
@@ -49,12 +53,18 @@ export declare const resourceFiles: (options: {
49
53
  path: string;
50
54
  contents: string;
51
55
  }[];
56
+ /**
57
+ * One skill in the agentskills.io layout: a `SKILL.md` with `name`/`description` frontmatter plus
58
+ * its resource files as siblings. The same bundle serves `.claude/skills/` and `.agents/skills/`;
59
+ * only the directory and the link resolver differ per target.
60
+ */
61
+ export declare const skillBundle: (options: {
62
+ item: ContentItem;
63
+ context: EmitContext;
64
+ dir: string;
65
+ links: LinkResolver;
66
+ }) => EmittedFile[];
52
67
  /** Descriptions routinely contain `:` and `-`, so always quote them rather than guess. */
53
68
  export declare const yamlString: (value: string) => string;
54
69
  /** Every generated document ends with exactly one trailing newline so Prettier stays quiet. */
55
70
  export declare const document: (parts: string[]) => string;
56
- export declare const pointerTable: (options: {
57
- skills: ContentItem[];
58
- context: EmitContext;
59
- pathFor: (name: string) => string;
60
- }) => string;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pointerTable = exports.document = exports.yamlString = exports.resourceFiles = exports.description = exports.body = exports.neutralLinks = exports.makeLinks = exports.neutralResourcePath = exports.neutralBodyPath = exports.NEUTRAL_DIR = void 0;
3
+ exports.document = exports.yamlString = exports.skillBundle = exports.resourceFiles = exports.description = exports.body = exports.agentsSkillsLinks = exports.makeLinks = exports.agentsSkillPath = exports.agentsSkillDir = exports.AGENTS_SKILLS_DIR = void 0;
4
4
  const fs_1 = require("fs");
5
5
  const render_1 = require("../render");
6
- exports.NEUTRAL_DIR = '.agents/ethlete';
7
- const neutralBodyPath = (name) => `${exports.NEUTRAL_DIR}/${name}.md`;
8
- exports.neutralBodyPath = neutralBodyPath;
9
- const neutralResourcePath = (options) => `${exports.NEUTRAL_DIR}/${options.skillName}/${options.fileName}`;
10
- exports.neutralResourcePath = neutralResourcePath;
6
+ exports.AGENTS_SKILLS_DIR = '.agents/skills';
7
+ const agentsSkillDir = (name) => `${exports.AGENTS_SKILLS_DIR}/ethlete-${name}`;
8
+ exports.agentsSkillDir = agentsSkillDir;
9
+ const agentsSkillPath = (name) => `${(0, exports.agentsSkillDir)(name)}/SKILL.md`;
10
+ exports.agentsSkillPath = agentsSkillPath;
11
11
  /**
12
12
  * A guide can be filtered out of a given repo while another still references it. Degrade such a
13
13
  * link to the bare name rather than emitting a path to a file that was never written.
@@ -17,12 +17,12 @@ const makeLinks = (options) => ({
17
17
  resource: options.resource,
18
18
  });
19
19
  exports.makeLinks = makeLinks;
20
- const neutralLinks = (context) => (0, exports.makeLinks)({
20
+ const agentsSkillsLinks = (context) => (0, exports.makeLinks)({
21
21
  context,
22
- skill: (name) => `\`${(0, exports.neutralBodyPath)(name)}\``,
23
- resource: (target) => `\`${(0, exports.neutralResourcePath)(target)}\``,
22
+ skill: (name) => `\`${(0, exports.agentsSkillPath)(name)}\``,
23
+ resource: (target) => `\`${(0, exports.agentsSkillDir)(target.skillName)}/${target.fileName}\``,
24
24
  });
25
- exports.neutralLinks = neutralLinks;
25
+ exports.agentsSkillsLinks = agentsSkillsLinks;
26
26
  const body = (options) => (0, render_1.renderBody)({ item: options.item, vars: options.context.vars, links: options.links });
27
27
  exports.body = body;
28
28
  const description = (options) => (0, render_1.renderDescription)({ item: options.item, vars: options.context.vars });
@@ -36,15 +36,32 @@ const resourceFiles = (options) => options.item.resources.map((resource) => ({
36
36
  }),
37
37
  }));
38
38
  exports.resourceFiles = resourceFiles;
39
+ /**
40
+ * One skill in the agentskills.io layout: a `SKILL.md` with `name`/`description` frontmatter plus
41
+ * its resource files as siblings. The same bundle serves `.claude/skills/` and `.agents/skills/`;
42
+ * only the directory and the link resolver differ per target.
43
+ */
44
+ const skillBundle = (options) => {
45
+ const { item, context, dir, links } = options;
46
+ const frontmatter = [
47
+ '---',
48
+ `name: ethlete-${item.frontmatter.name}`,
49
+ `description: ${(0, exports.yamlString)((0, exports.description)({ item, context }))}`,
50
+ '---',
51
+ ].join('\n');
52
+ return [
53
+ {
54
+ path: `${dir}/SKILL.md`,
55
+ contents: (0, exports.document)([frontmatter, (0, render_1.buildBanner)(context.version), (0, exports.body)({ item, context, links })]),
56
+ },
57
+ ...(0, exports.resourceFiles)({ item, context, pathFor: (fileName) => `${dir}/${fileName}` }),
58
+ ];
59
+ };
60
+ exports.skillBundle = skillBundle;
39
61
  /** Descriptions routinely contain `:` and `-`, so always quote them rather than guess. */
40
62
  const yamlString = (value) => `"${value.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
41
63
  exports.yamlString = yamlString;
42
64
  /** Every generated document ends with exactly one trailing newline so Prettier stays quiet. */
43
65
  const document = (parts) => `${parts.filter((part) => part.length > 0).join('\n\n')}\n`;
44
66
  exports.document = document;
45
- const pointerTable = (options) => {
46
- const rows = options.skills.map((item) => `| \`${options.pathFor(item.frontmatter.name)}\` | ${(0, exports.description)({ item, context: options.context })} |`);
47
- return ['| Read this file | When |', '| --- | --- |', ...rows].join('\n');
48
- };
49
- exports.pointerTable = pointerTable;
50
67
  //# sourceMappingURL=shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/shared.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { EmitContext, EmittedFile } from './shared';
2
- /**
3
- * Plain markdown copies under `.agents/ethlete/`, with no agent-specific frontmatter. Codex,
4
- * Cursor and Copilot all point at these for anything their own format cannot express — Codex has
5
- * no on-demand mechanism at all, and neither Cursor nor Copilot can bundle a resource file
6
- * alongside a rule.
7
- */
8
- export declare const emitNeutral: (context: EmitContext) => EmittedFile[];
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitNeutral = void 0;
4
- const render_1 = require("../render");
5
- const shared_1 = require("./shared");
6
- /**
7
- * Plain markdown copies under `.agents/ethlete/`, with no agent-specific frontmatter. Codex,
8
- * Cursor and Copilot all point at these for anything their own format cannot express — Codex has
9
- * no on-demand mechanism at all, and neither Cursor nor Copilot can bundle a resource file
10
- * alongside a rule.
11
- */
12
- const emitNeutral = (context) => {
13
- const banner = (0, render_1.buildBanner)(context.version);
14
- const files = [];
15
- for (const item of context.skills) {
16
- files.push({
17
- path: (0, shared_1.neutralBodyPath)(item.frontmatter.name),
18
- contents: (0, shared_1.document)([banner, (0, shared_1.body)({ item, context, links: (0, shared_1.neutralLinks)(context) })]),
19
- });
20
- files.push(...(0, shared_1.resourceFiles)({
21
- item,
22
- context,
23
- pathFor: (fileName) => (0, shared_1.neutralResourcePath)({ skillName: item.frontmatter.name, fileName }),
24
- }));
25
- }
26
- return files;
27
- };
28
- exports.emitNeutral = emitNeutral;
29
- //# sourceMappingURL=neutral.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"neutral.js","sourceRoot":"","sources":["../../../../../../libs/agent-rules/src/lib/targets/neutral.ts"],"names":[],"mappings":";;;AAAA,sCAAwC;AACxC,qCASkB;AAElB;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAC,OAAoB,EAAiB,EAAE;IACjE,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,IAAA,wBAAe,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAC5C,QAAQ,EAAE,IAAA,iBAAQ,EAAC,CAAC,MAAM,EAAE,IAAA,aAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAA,qBAAY,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;SACpF,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CACR,GAAG,IAAA,sBAAa,EAAC;YACf,IAAI;YACJ,OAAO;YACP,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAA,4BAAmB,EAAC,EAAE,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC3F,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AApBW,QAAA,WAAW,eAoBtB"}