ai-devkit 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +248 -0
  2. package/dist/cli.js +2 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/skill.d.ts +3 -0
  5. package/dist/commands/skill.d.ts.map +1 -0
  6. package/dist/commands/skill.js +77 -0
  7. package/dist/commands/skill.js.map +1 -0
  8. package/dist/lib/EnvironmentSelector.d.ts +2 -1
  9. package/dist/lib/EnvironmentSelector.d.ts.map +1 -1
  10. package/dist/lib/EnvironmentSelector.js +55 -27
  11. package/dist/lib/EnvironmentSelector.js.map +1 -1
  12. package/dist/lib/SkillManager.d.ts +33 -0
  13. package/dist/lib/SkillManager.d.ts.map +1 -0
  14. package/dist/lib/SkillManager.js +254 -0
  15. package/dist/lib/SkillManager.js.map +1 -0
  16. package/dist/templates/commands/capture-knowledge.md +0 -5
  17. package/dist/templates/commands/check-implementation.md +0 -5
  18. package/dist/templates/commands/code-review.md +0 -5
  19. package/dist/templates/commands/debug.md +0 -5
  20. package/dist/templates/commands/execute-plan.md +0 -5
  21. package/dist/templates/commands/new-requirement.md +0 -5
  22. package/dist/templates/commands/remember.md +1 -1
  23. package/dist/templates/commands/review-design.md +0 -5
  24. package/dist/templates/commands/review-requirements.md +0 -5
  25. package/dist/templates/commands/simplify-implementation.md +0 -5
  26. package/dist/templates/commands/update-planning.md +0 -5
  27. package/dist/templates/commands/writing-test.md +0 -5
  28. package/dist/templates/env/base.md +32 -0
  29. package/dist/templates/templates/commands/capture-knowledge.md +0 -5
  30. package/dist/templates/templates/commands/check-implementation.md +0 -5
  31. package/dist/templates/templates/commands/code-review.md +0 -5
  32. package/dist/templates/templates/commands/debug.md +0 -5
  33. package/dist/templates/templates/commands/execute-plan.md +0 -5
  34. package/dist/templates/templates/commands/new-requirement.md +0 -5
  35. package/dist/templates/templates/commands/remember.md +1 -1
  36. package/dist/templates/templates/commands/review-design.md +0 -5
  37. package/dist/templates/templates/commands/review-requirements.md +0 -5
  38. package/dist/templates/templates/commands/simplify-implementation.md +0 -5
  39. package/dist/templates/templates/commands/update-planning.md +0 -5
  40. package/dist/templates/templates/commands/writing-test.md +0 -5
  41. package/dist/templates/templates/env/base.md +32 -0
  42. package/dist/types.d.ts +1 -0
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/types.js.map +1 -1
  45. package/dist/util/env.d.ts +2 -0
  46. package/dist/util/env.d.ts.map +1 -1
  47. package/dist/util/env.js +14 -0
  48. package/dist/util/env.js.map +1 -1
  49. package/dist/util/git.d.ts +15 -0
  50. package/dist/util/git.d.ts.map +1 -0
  51. package/dist/util/git.js +82 -0
  52. package/dist/util/git.js.map +1 -0
  53. package/dist/util/skill.d.ts +13 -0
  54. package/dist/util/skill.d.ts.map +1 -0
  55. package/dist/util/skill.js +34 -0
  56. package/dist/util/skill.js.map +1 -0
  57. package/package.json +1 -1
  58. package/templates/commands/capture-knowledge.md +0 -5
  59. package/templates/commands/check-implementation.md +0 -5
  60. package/templates/commands/code-review.md +0 -5
  61. package/templates/commands/debug.md +0 -5
  62. package/templates/commands/execute-plan.md +0 -5
  63. package/templates/commands/new-requirement.md +0 -5
  64. package/templates/commands/remember.md +1 -1
  65. package/templates/commands/review-design.md +0 -5
  66. package/templates/commands/review-requirements.md +0 -5
  67. package/templates/commands/simplify-implementation.md +0 -5
  68. package/templates/commands/update-planning.md +0 -5
  69. package/templates/commands/writing-test.md +0 -5
  70. package/templates/env/base.md +32 -0
@@ -28,6 +28,38 @@ This project uses ai-devkit for structured AI-assisted development. Phase docume
28
28
  - For new features, start with requirements clarification
29
29
  - Update phase docs when significant changes or decisions are made
30
30
 
31
+ ## Knowledge Memory (Always Use When Helpful)
32
+ The AI assistant should proactively use knowledge memory throughout all interactions:
33
+
34
+ ### When to Search Memory
35
+ - Before starting any task, search for relevant project conventions, patterns, or decisions
36
+ - When you need clarification on how something was done before
37
+ - To check for existing solutions to similar problems
38
+ - To understand project-specific terminology or standards
39
+
40
+ **How to search**:
41
+ - Use `memory.searchKnowledge` MCP tool with relevant keywords, tags, and scope
42
+ - If MCP tools are unavailable, use `npx ai-devkit memory search` CLI command
43
+ - Example: Search for "authentication patterns" when implementing auth features
44
+
45
+ ### When to Store Memory
46
+ - After making important architectural or design decisions
47
+ - When discovering useful patterns or solutions worth reusing
48
+ - If the user explicitly asks to "remember this" or save guidance
49
+ - When you establish new conventions or standards for the project
50
+
51
+ **How to store**:
52
+ - Use `memory.storeKnowledge` MCP tool or run `/remember` command
53
+ - If MCP tools are unavailable, use `npx ai-devkit memory store` CLI command
54
+ - Include clear title, detailed content, relevant tags, and appropriate scope
55
+ - Make knowledge specific and actionable, not generic advice
56
+
57
+ ### Memory Best Practices
58
+ - **Be Proactive**: Search memory before asking the user repetitive questions
59
+ - **Be Specific**: Store knowledge that's actionable and reusable
60
+ - **Use Tags**: Tag knowledge appropriately for easy discovery (e.g., "api", "testing", "architecture")
61
+ - **Scope Appropriately**: Use `global` for general patterns, `project:<name>` for project-specific knowledge
62
+
31
63
  ## Testing & Quality
32
64
  - Write tests alongside implementation
33
65
  - Follow the testing strategy defined in `docs/ai/testing/`
package/dist/types.d.ts CHANGED
@@ -4,6 +4,7 @@ export interface EnvironmentDefinition {
4
4
  name: string;
5
5
  contextFileName: string;
6
6
  commandPath: string;
7
+ skillPath?: string;
7
8
  description?: string;
8
9
  isCustomCommandPath?: boolean;
9
10
  customCommandExtension?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACb,cAAc,GACd,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,aAAa,CAAC;AAEzJ,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,EAQnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAQrD,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,KAAK,GACb,cAAc,GACd,QAAQ,GACR,UAAU,GACV,gBAAgB,GAChB,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,aAAa,CAAC;AAEzJ,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,EAQnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAQrD,CAAC"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAoCa,QAAA,gBAAgB,GAAY;IACvC,cAAc;IACd,QAAQ;IACR,UAAU;IACV,gBAAgB;IAChB,SAAS;IACT,YAAY;IACZ,YAAY;CACb,CAAC;AAEW,QAAA,mBAAmB,GAA0B;IACxD,YAAY,EAAE,sCAAsC;IACpD,MAAM,EAAE,8BAA8B;IACtC,QAAQ,EAAE,mCAAmC;IAC7C,cAAc,EAAE,sBAAsB;IACtC,OAAO,EAAE,kBAAkB;IAC3B,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,4BAA4B;CACzC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAqCa,QAAA,gBAAgB,GAAY;IACvC,cAAc;IACd,QAAQ;IACR,UAAU;IACV,gBAAgB;IAChB,SAAS;IACT,YAAY;IACZ,YAAY;CACb,CAAC;AAEW,QAAA,mBAAmB,GAA0B;IACxD,YAAY,EAAE,sCAAsC;IACpD,MAAM,EAAE,8BAA8B;IACtC,QAAQ,EAAE,mCAAmC;IAC7C,cAAc,EAAE,sBAAsB;IACtC,OAAO,EAAE,kBAAkB;IAC3B,UAAU,EAAE,qBAAqB;IACjC,UAAU,EAAE,4BAA4B;CACzC,CAAC"}
@@ -10,4 +10,6 @@ export declare function getEnvironmentDisplayName(envCode: EnvironmentCode): str
10
10
  export declare function validateEnvironmentCodes(envCodes: string[]): EnvironmentCode[];
11
11
  export declare function getGlobalCapableEnvironments(): EnvironmentDefinition[];
12
12
  export declare function hasGlobalSupport(envCode: EnvironmentCode): boolean;
13
+ export declare function getSkillPath(envCode: EnvironmentCode): string | undefined;
14
+ export declare function getSkillCapableEnvironments(): EnvironmentDefinition[];
13
15
  //# sourceMappingURL=env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/util/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAuElF,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAAe,EAA8D,CAAC;AAElH,wBAAgB,kBAAkB,IAAI,qBAAqB,EAAE,CAE5D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,GAAG,SAAS,CAE1F;AAED,wBAAgB,sBAAsB,IAAI,eAAe,EAAE,CAE1D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,qBAAqB,EAAE,CAExF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,eAAe,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAG1E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAiB9E;AAED,wBAAgB,4BAA4B,IAAI,qBAAqB,EAAE,CAEtE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAGlE"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/util/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CA4ElF,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAAe,EAA8D,CAAC;AAElH,wBAAgB,kBAAkB,IAAI,qBAAqB,EAAE,CAE5D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,qBAAqB,GAAG,SAAS,CAE1F;AAED,wBAAgB,sBAAsB,IAAI,eAAe,EAAE,CAE1D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,qBAAqB,EAAE,CAExF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,eAAe,CAE9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAG1E;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAiB9E;AAED,wBAAgB,4BAA4B,IAAI,qBAAqB,EAAE,CAEtE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAGlE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAGzE;AAED,wBAAgB,2BAA2B,IAAI,qBAAqB,EAAE,CAErE"}
package/dist/util/env.js CHANGED
@@ -10,18 +10,22 @@ exports.getEnvironmentDisplayName = getEnvironmentDisplayName;
10
10
  exports.validateEnvironmentCodes = validateEnvironmentCodes;
11
11
  exports.getGlobalCapableEnvironments = getGlobalCapableEnvironments;
12
12
  exports.hasGlobalSupport = hasGlobalSupport;
13
+ exports.getSkillPath = getSkillPath;
14
+ exports.getSkillCapableEnvironments = getSkillCapableEnvironments;
13
15
  exports.ENVIRONMENT_DEFINITIONS = {
14
16
  cursor: {
15
17
  code: 'cursor',
16
18
  name: 'Cursor',
17
19
  contextFileName: 'AGENTS.md',
18
20
  commandPath: '.cursor/commands',
21
+ skillPath: '.cursor/skills',
19
22
  },
20
23
  claude: {
21
24
  code: 'claude',
22
25
  name: 'Claude Code',
23
26
  contextFileName: 'CLAUDE.md',
24
27
  commandPath: '.claude/commands',
28
+ skillPath: '.claude/skills',
25
29
  },
26
30
  github: {
27
31
  code: 'github',
@@ -43,6 +47,7 @@ exports.ENVIRONMENT_DEFINITIONS = {
43
47
  contextFileName: 'AGENTS.md',
44
48
  commandPath: '.codex/commands',
45
49
  globalCommandPath: '.codex/prompts',
50
+ skillPath: '.codex/skills',
46
51
  },
47
52
  windsurf: {
48
53
  code: 'windsurf',
@@ -67,6 +72,7 @@ exports.ENVIRONMENT_DEFINITIONS = {
67
72
  name: 'OpenCode',
68
73
  contextFileName: 'AGENTS.md',
69
74
  commandPath: '.opencode/commands',
75
+ skillPath: '.opencode/skills',
70
76
  },
71
77
  roo: {
72
78
  code: 'roo',
@@ -80,6 +86,7 @@ exports.ENVIRONMENT_DEFINITIONS = {
80
86
  contextFileName: 'AGENTS.md',
81
87
  commandPath: '.agent/workflows',
82
88
  globalCommandPath: '.gemini/antigravity/global_workflows',
89
+ skillPath: '.agent/skills',
83
90
  }
84
91
  };
85
92
  exports.ALL_ENVIRONMENT_CODES = Object.keys(exports.ENVIRONMENT_DEFINITIONS);
@@ -125,4 +132,11 @@ function hasGlobalSupport(envCode) {
125
132
  const env = getEnvironment(envCode);
126
133
  return env !== undefined && env.globalCommandPath !== undefined;
127
134
  }
135
+ function getSkillPath(envCode) {
136
+ const env = getEnvironment(envCode);
137
+ return env?.skillPath;
138
+ }
139
+ function getSkillCapableEnvironments() {
140
+ return getAllEnvironments().filter(env => env.skillPath !== undefined);
141
+ }
128
142
  //# sourceMappingURL=env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/util/env.ts"],"names":[],"mappings":";;;AA6EA,gDAEC;AAED,wCAEC;AAED,wDAEC;AAED,wDAEC;AAED,wDAEC;AAED,8DAGC;AAED,4DAiBC;AAED,oEAEC;AAED,4CAGC;AA9HY,QAAA,uBAAuB,GAAmD;IACrF,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,kBAAkB;KAChC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,aAAa;QACnB,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,kBAAkB;KAChC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,gBAAgB;QACtB,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,iBAAiB;QAC9B,sBAAsB,EAAE,YAAY;KACrC;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,eAAe;QACrB,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,kBAAkB;QAC/B,mBAAmB,EAAE,IAAI;KAC1B;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,cAAc;QACpB,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,iBAAiB;QAC9B,iBAAiB,EAAE,gBAAgB;KACpC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,oBAAoB;KAClC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,oBAAoB;KAClC;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;QACX,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,kBAAkB;KAChC;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,oBAAoB;KAClC;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,UAAU;QAChB,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,eAAe;KAC7B;IACD,WAAW,EAAE;QACX,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,aAAa;QACnB,eAAe,EAAE,WAAW;QAC5B,WAAW,EAAE,kBAAkB;QAC/B,iBAAiB,EAAE,sCAAsC;KAC1D;CACF,CAAC;AAEW,QAAA,qBAAqB,GAAsB,MAAM,CAAC,IAAI,CAAC,+BAAuB,CAAsB,CAAC;AAElH,SAAgB,kBAAkB;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,+BAAuB,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,cAAc,CAAC,OAAwB;IACrD,OAAO,+BAAuB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,sBAAsB;IACpC,OAAO,CAAC,GAAG,6BAAqB,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAwB;IAC7D,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAgC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;AAClH,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAa;IAClD,OAAO,6BAAqB,CAAC,QAAQ,CAAC,KAAwB,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,yBAAyB,CAAC,OAAwB;IAChE,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAClC,CAAC;AAED,SAAgB,wBAAwB,CAAC,QAAkB;IACzD,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAgB,4BAA4B;IAC1C,OAAO,kBAAkB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC;AACjF,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAwB;IACvD,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/util/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Checks if git is installed and available in PATH
3
+ * @throws Error if git is not installed
4
+ */
5
+ export declare function ensureGitInstalled(): Promise<void>;
6
+ /**
7
+ * Clones a repository to the specified directory
8
+ * @param targetDir - Target directory for the clone
9
+ * @param repoName - Name of the repository
10
+ * @param gitUrl - Git URL to clone from
11
+ * @returns Path to cloned repository
12
+ * @throws Error if clone fails or times out
13
+ */
14
+ export declare function cloneRepository(targetDir: string, repoName: string, gitUrl: string): Promise<string>;
15
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/util/git.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQxD;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB1G"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ensureGitInstalled = ensureGitInstalled;
37
+ exports.cloneRepository = cloneRepository;
38
+ const child_process_1 = require("child_process");
39
+ const util_1 = require("util");
40
+ const fs = __importStar(require("fs-extra"));
41
+ const path = __importStar(require("path"));
42
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
43
+ /**
44
+ * Checks if git is installed and available in PATH
45
+ * @throws Error if git is not installed
46
+ */
47
+ async function ensureGitInstalled() {
48
+ try {
49
+ await execAsync('git --version');
50
+ }
51
+ catch {
52
+ throw new Error('Git is not installed or not in PATH. Please install Git: https://git-scm.com/downloads');
53
+ }
54
+ }
55
+ /**
56
+ * Clones a repository to the specified directory
57
+ * @param targetDir - Target directory for the clone
58
+ * @param repoName - Name of the repository
59
+ * @param gitUrl - Git URL to clone from
60
+ * @returns Path to cloned repository
61
+ * @throws Error if clone fails or times out
62
+ */
63
+ async function cloneRepository(targetDir, repoName, gitUrl) {
64
+ const repoPath = path.join(targetDir, repoName);
65
+ if (await fs.pathExists(repoPath)) {
66
+ console.log(` → ${targetDir}/${repoName} (already exists, skipped)`);
67
+ return repoPath;
68
+ }
69
+ console.log(` → Cloning ${repoName} (this may take a moment)...`);
70
+ await fs.ensureDir(path.dirname(repoPath));
71
+ try {
72
+ await execAsync(`git clone --depth 1 --single-branch "${gitUrl}" "${repoPath}"`, {
73
+ timeout: 60000,
74
+ });
75
+ console.log(' → Clone complete');
76
+ return repoPath;
77
+ }
78
+ catch (error) {
79
+ throw new Error(`Git clone failed: ${error.message}. Check network and git installation.`);
80
+ }
81
+ }
82
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/util/git.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,gDAQC;AAUD,0CAoBC;AAjDD,iDAAqC;AACrC,+BAAiC;AACjC,6CAA+B;AAC/B,2CAA6B;AAE7B,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC;;;GAGG;AACI,KAAK,UAAU,kBAAkB;IACtC,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,eAAe,CAAC,SAAiB,EAAE,QAAgB,EAAE,MAAc;IACvF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,OAAO,SAAS,IAAI,QAAQ,4BAA4B,CAAC,CAAC;QACtE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,8BAA8B,CAAC,CAAC;IACnE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,wCAAwC,MAAM,MAAM,QAAQ,GAAG,EAAE;YAC/E,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,uCAAuC,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Validates registry ID format
3
+ * @param registryId - Expected format: "org/repo"
4
+ * @throws Error if format is invalid or contains unsafe characters
5
+ */
6
+ export declare function validateRegistryId(registryId: string): void;
7
+ /**
8
+ * Validates skill name according to Agent Skills specification
9
+ * @param skillName - Must be lowercase, alphanumeric with hyphens
10
+ * @throws Error if name doesn't meet requirements
11
+ */
12
+ export declare function validateSkillName(skillName: string): void;
13
+ //# sourceMappingURL=skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/util/skill.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAQ3D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAczD"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateRegistryId = validateRegistryId;
4
+ exports.validateSkillName = validateSkillName;
5
+ /**
6
+ * Validates registry ID format
7
+ * @param registryId - Expected format: "org/repo"
8
+ * @throws Error if format is invalid or contains unsafe characters
9
+ */
10
+ function validateRegistryId(registryId) {
11
+ if (!/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_-]+$/.test(registryId)) {
12
+ throw new Error(`Invalid registry ID format: "${registryId}". Expected format: "org/repo"`);
13
+ }
14
+ if (registryId.includes('..') || registryId.includes('~')) {
15
+ throw new Error('Invalid characters in registry ID');
16
+ }
17
+ }
18
+ /**
19
+ * Validates skill name according to Agent Skills specification
20
+ * @param skillName - Must be lowercase, alphanumeric with hyphens
21
+ * @throws Error if name doesn't meet requirements
22
+ */
23
+ function validateSkillName(skillName) {
24
+ if (!/^[a-z0-9-]+$/.test(skillName)) {
25
+ throw new Error(`Invalid skill name: "${skillName}". Must contain only lowercase letters, numbers, and hyphens.`);
26
+ }
27
+ if (skillName.startsWith('-') || skillName.endsWith('-')) {
28
+ throw new Error('Skill name cannot start or end with a hyphen.');
29
+ }
30
+ if (skillName.includes('--')) {
31
+ throw new Error('Skill name cannot contain consecutive hyphens.');
32
+ }
33
+ }
34
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/util/skill.ts"],"names":[],"mappings":";;AAKA,gDAQC;AAOD,8CAcC;AAlCD;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,UAAkB;IACnD,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,gCAAgC,UAAU,gCAAgC,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,wBAAwB,SAAS,+DAA+D,CACjG,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-devkit",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "A CLI toolkit for AI-assisted software development with phase templates and environment setup",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -6,11 +6,6 @@ description: Capture structured knowledge about a code entry point and save it t
6
6
 
7
7
  Guide me through creating a structured understanding of a code entry point and saving it to the knowledge docs.
8
8
 
9
- ## Memory (use when helpful)
10
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
11
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
12
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
13
-
14
9
  ## Step 1: Gather Context
15
10
  - Entry point (file, folder, function, API)
16
11
  - Why this entry point matters (feature, bug, investigation)
@@ -4,11 +4,6 @@ description: Compare implementation with design and requirements docs to ensure
4
4
 
5
5
  Compare the current implementation with the design in docs/ai/design/ and requirements in docs/ai/requirements/. Please follow this structured review:
6
6
 
7
- ## Memory (use when helpful)
8
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
9
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
10
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
11
-
12
7
  1. Ask me for:
13
8
  - Feature/branch description
14
9
  - List of modified files
@@ -6,11 +6,6 @@ description: Perform a local code review before pushing changes, ensuring alignm
6
6
 
7
7
  You are helping me perform a local code review **before** I push changes. Please follow this structured workflow.
8
8
 
9
- ## Memory (use when helpful)
10
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
11
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
12
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
13
-
14
9
  ## Step 1: Gather Context
15
10
  Ask me for:
16
11
  - Brief feature/branch description
@@ -6,11 +6,6 @@ description: Guide me through debugging a code issue by clarifying expectations,
6
6
 
7
7
  Help me debug an issue by clarifying expectations, identifying gaps, and agreeing on a fix plan before changing code.
8
8
 
9
- ## Memory (use when helpful)
10
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
11
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
12
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
13
-
14
9
  ## Step 1: Gather Context
15
10
  Ask me for:
16
11
  - Brief issue description (what is happening?)
@@ -6,11 +6,6 @@ description: Execute a feature plan interactively, guiding me through each task
6
6
 
7
7
  Help me work through a feature plan one task at a time.
8
8
 
9
- ## Memory (use when helpful)
10
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
11
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
12
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
13
-
14
9
  ## Step 1: Gather Context
15
10
  Ask me for:
16
11
  - Feature name (kebab-case, e.g., `user-authentication`)
@@ -4,11 +4,6 @@ description: Add new feature/requirement documentation and guide me through the
4
4
 
5
5
  I want to add a new feature/requirement. Please guide me through the complete development workflow:
6
6
 
7
- ## Memory (use when helpful)
8
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
9
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
10
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
11
-
12
7
  ## Step 1: Capture Requirement
13
8
  First, ask me:
14
9
  - What is the feature name? (e.g., "user-authentication", "payment-integration")
@@ -21,7 +21,7 @@ If I'm vague, ask follow-ups to make it specific and actionable.
21
21
 
22
22
  ## Step 3: Store
23
23
  Call `memory.storeKnowledge` with title, content, tags, scope.
24
- If MCP tools are unavailable, use `ai-devkit memory store` instead.
24
+ If MCP tools are unavailable, use `npx ai-devkit memory store` instead.
25
25
 
26
26
  ## Step 4: Confirm
27
27
  Summarize what was saved and offer to store more knowledge if needed.
@@ -4,11 +4,6 @@ description: Review the design documentation for a feature to ensure completenes
4
4
 
5
5
  Review the design documentation in docs/ai/design/feature-{name}.md (and the project-level README if relevant). Summarize:
6
6
 
7
- ## Memory (use when helpful)
8
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
9
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
10
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
11
-
12
7
  - Architecture overview (ensure mermaid diagram is present and accurate)
13
8
  - Key components and their responsibilities
14
9
  - Technology choices and rationale
@@ -4,11 +4,6 @@ description: Review the requirements documentation for a feature to ensure compl
4
4
 
5
5
  Please review `docs/ai/requirements/feature-{name}.md` and the project-level template `docs/ai/requirements/README.md` to ensure structure and content alignment. Summarize:
6
6
 
7
- ## Memory (use when helpful)
8
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
9
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
10
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
11
-
12
7
  - Core problem statement and affected users
13
8
  - Goals, non-goals, and success criteria
14
9
  - Primary user stories & critical flows
@@ -6,11 +6,6 @@ description: Analyze and simplify existing implementations to reduce complexity,
6
6
 
7
7
  You are an expert engineer focused on reducing complexity and improving scalability. Help me simplify an existing implementation while maintaining or improving its functionality.
8
8
 
9
- ## Memory (use when helpful)
10
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
11
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
12
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
13
-
14
9
  ## Step 1: Gather Context
15
10
  Ask me for:
16
11
  - Target file(s) or component(s) to simplify
@@ -6,11 +6,6 @@ description: Assist in updating planning documentation to reflect current implem
6
6
 
7
7
  Please help me reconcile the current implementation progress with our planning documentation.
8
8
 
9
- ## Memory (use when helpful)
10
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
11
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
12
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
13
-
14
9
  ## Step 1: Gather Context
15
10
  Ask me for:
16
11
  - Feature/branch name and brief status
@@ -4,11 +4,6 @@ description: Add tests for a new feature.
4
4
 
5
5
  Review `docs/ai/testing/feature-{name}.md` and ensure it mirrors the base template before writing tests.
6
6
 
7
- ## Memory (use when helpful)
8
- - If you need clarification or project conventions, query `memory.searchKnowledge` with a brief task description, tags, and scope.
9
- - If I ask to save reusable guidance, run `/remember` (or call `memory.storeKnowledge`).
10
- - If MCP tools are unavailable, use `ai-devkit memory search` or `ai-devkit memory store`.
11
-
12
7
  ## Step 1: Gather Context
13
8
  Ask me for:
14
9
  - Feature name and branch
@@ -28,6 +28,38 @@ This project uses ai-devkit for structured AI-assisted development. Phase docume
28
28
  - For new features, start with requirements clarification
29
29
  - Update phase docs when significant changes or decisions are made
30
30
 
31
+ ## Knowledge Memory (Always Use When Helpful)
32
+ The AI assistant should proactively use knowledge memory throughout all interactions:
33
+
34
+ ### When to Search Memory
35
+ - Before starting any task, search for relevant project conventions, patterns, or decisions
36
+ - When you need clarification on how something was done before
37
+ - To check for existing solutions to similar problems
38
+ - To understand project-specific terminology or standards
39
+
40
+ **How to search**:
41
+ - Use `memory.searchKnowledge` MCP tool with relevant keywords, tags, and scope
42
+ - If MCP tools are unavailable, use `npx ai-devkit memory search` CLI command
43
+ - Example: Search for "authentication patterns" when implementing auth features
44
+
45
+ ### When to Store Memory
46
+ - After making important architectural or design decisions
47
+ - When discovering useful patterns or solutions worth reusing
48
+ - If the user explicitly asks to "remember this" or save guidance
49
+ - When you establish new conventions or standards for the project
50
+
51
+ **How to store**:
52
+ - Use `memory.storeKnowledge` MCP tool or run `/remember` command
53
+ - If MCP tools are unavailable, use `npx ai-devkit memory store` CLI command
54
+ - Include clear title, detailed content, relevant tags, and appropriate scope
55
+ - Make knowledge specific and actionable, not generic advice
56
+
57
+ ### Memory Best Practices
58
+ - **Be Proactive**: Search memory before asking the user repetitive questions
59
+ - **Be Specific**: Store knowledge that's actionable and reusable
60
+ - **Use Tags**: Tag knowledge appropriately for easy discovery (e.g., "api", "testing", "architecture")
61
+ - **Scope Appropriately**: Use `global` for general patterns, `project:<name>` for project-specific knowledge
62
+
31
63
  ## Testing & Quality
32
64
  - Write tests alongside implementation
33
65
  - Follow the testing strategy defined in `docs/ai/testing/`