knowzcode 0.4.0 → 0.5.2

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 (79) hide show
  1. package/.claude-plugin/marketplace.json +61 -61
  2. package/.claude-plugin/plugin.json +8 -8
  3. package/LICENSE +121 -121
  4. package/README.md +379 -354
  5. package/agents/analyst.md +114 -114
  6. package/agents/architect.md +200 -200
  7. package/agents/builder.md +104 -104
  8. package/agents/closer.md +177 -177
  9. package/agents/context-scout.md +54 -54
  10. package/agents/knowledge-migrator.md +349 -349
  11. package/agents/knowz-scout.md +83 -83
  12. package/agents/knowz-scribe.md +180 -180
  13. package/agents/microfix-specialist.md +135 -135
  14. package/agents/project-advisor.md +111 -111
  15. package/agents/reviewer.md +172 -172
  16. package/agents/security-officer.md +194 -194
  17. package/agents/test-advisor.md +162 -162
  18. package/agents/update-coordinator.md +394 -394
  19. package/bin/knowzcode.mjs +1457 -1199
  20. package/commands/audit.md +328 -328
  21. package/commands/connect-mcp.md +574 -549
  22. package/commands/fix.md +107 -107
  23. package/commands/init.md +616 -500
  24. package/commands/learn.md +332 -332
  25. package/commands/plan.md +272 -272
  26. package/commands/register.md +757 -733
  27. package/commands/status.md +338 -309
  28. package/commands/telemetry-setup.md +368 -368
  29. package/commands/telemetry.md +188 -188
  30. package/commands/work.md +1204 -1204
  31. package/knowzcode/automation_manifest.md +59 -59
  32. package/knowzcode/claude_code_execution.md +431 -431
  33. package/knowzcode/copilot_execution.md +231 -231
  34. package/knowzcode/enterprise/compliance_manifest.md +137 -137
  35. package/knowzcode/enterprise/compliance_status.md +30 -30
  36. package/knowzcode/enterprise/guidelines/code-quality.md +67 -67
  37. package/knowzcode/enterprise/guidelines/security.md +355 -355
  38. package/knowzcode/enterprise/templates/guideline-template.md +55 -55
  39. package/knowzcode/gitignore.template +13 -13
  40. package/knowzcode/knowzcode_architecture.md +51 -51
  41. package/knowzcode/knowzcode_log.md +142 -142
  42. package/knowzcode/knowzcode_loop.md +601 -596
  43. package/knowzcode/knowzcode_orchestration.md +66 -66
  44. package/knowzcode/knowzcode_project.md +48 -48
  45. package/knowzcode/knowzcode_tracker.md +40 -40
  46. package/knowzcode/knowzcode_vaults.md +257 -257
  47. package/knowzcode/mcp_config.md +196 -191
  48. package/knowzcode/planning/Readme.md +6 -6
  49. package/knowzcode/platform_adapters.md +2577 -1260
  50. package/knowzcode/prompts/Execute_Micro_Fix.md +57 -57
  51. package/knowzcode/prompts/Investigate_Codebase.md +227 -227
  52. package/knowzcode/prompts/Migrate_Knowledge.md +301 -301
  53. package/knowzcode/prompts/Refactor_Node.md +72 -72
  54. package/knowzcode/prompts/Spec_Verification_Checkpoint.md +59 -59
  55. package/knowzcode/prompts/[LOOP_1A]__Propose_Change_Set.md +52 -52
  56. package/knowzcode/prompts/[LOOP_1B]__Draft_Specs.md +75 -75
  57. package/knowzcode/prompts/[LOOP_2A]__Implement_Change_Set.md +55 -55
  58. package/knowzcode/prompts/[LOOP_2B]__Verify_Implementation.md +72 -72
  59. package/knowzcode/prompts/[LOOP_3]__Finalize_And_Commit.md +67 -67
  60. package/knowzcode/specs/Readme.md +10 -10
  61. package/knowzcode/telemetry_config.md +89 -89
  62. package/knowzcode/user_preferences.md +120 -120
  63. package/package.json +53 -53
  64. package/skills/alias-resolver.json +15 -15
  65. package/skills/architecture-diff.json +12 -12
  66. package/skills/check-installation-status.json +14 -14
  67. package/skills/continue.md +126 -126
  68. package/skills/environment-guard.json +12 -12
  69. package/skills/generate-workgroup-id.json +25 -25
  70. package/skills/install-knowzcode.json +21 -21
  71. package/skills/load-core-context.json +18 -18
  72. package/skills/log-entry-builder.json +15 -15
  73. package/skills/spec-quality-check.json +14 -14
  74. package/skills/spec-template.json +15 -15
  75. package/skills/spec-validator.json +25 -25
  76. package/skills/start-work.md +224 -224
  77. package/skills/tracker-scan.json +12 -12
  78. package/skills/tracker-update.json +28 -28
  79. package/skills/validate-installation.json +14 -14
@@ -1,120 +1,120 @@
1
- # User Development Preferences
2
-
3
- ---
4
-
5
- **Purpose:** This document captures your personal development preferences and coding standards. These preferences integrate with KnowzCode's workflow while respecting your style and approach.
6
-
7
- **Last Updated:** [ISO timestamp - to be filled during init]
8
- **Source:** User-provided during initialization
9
-
10
- ---
11
-
12
- ## Core Principles
13
-
14
- [User-provided principles, or "Not configured"]
15
-
16
- *Examples:*
17
- - Test-Driven Development (TDD mandatory)
18
- - Immutable data structures preferred
19
- - Functional programming patterns
20
- - Domain-Driven Design (DDD)
21
- - SOLID principles
22
-
23
- ---
24
-
25
- ## Testing Approach
26
-
27
- [User-provided testing preferences, or "Follows KnowzCode TDD requirements"]
28
-
29
- *Examples:*
30
- - **Framework:** XUnit / Jest / PyTest / Playwright
31
- - **Style:** Behavior-driven / Unit-first / Integration-focused
32
- - **Coverage:** Minimum 80% / All public APIs / Critical paths only
33
- - **Patterns:** AAA (Arrange-Act-Assert) / Given-When-Then
34
- - **Mocking:** Moq / Jest mocks / unittest.mock
35
-
36
- ---
37
-
38
- ## Code Style
39
-
40
- [User-provided style preferences, or "Standard for language/framework"]
41
-
42
- *Examples:*
43
- - **Naming:** PascalCase for methods, camelCase for variables
44
- - **Structure:** Small functions (max 20 lines), single responsibility
45
- - **Comments:** Self-documenting code, minimal comments
46
- - **Formatting:** Prettier / Black / Standard formatter
47
- - **Linting:** ESLint / Flake8 / Custom rules
48
-
49
- ---
50
-
51
- ## Language-Specific Patterns
52
-
53
- [User-provided language-specific preferences, or "N/A"]
54
-
55
- *Examples (C#):*
56
- - Nullable reference types always enabled
57
- - Records for immutable DTOs
58
- - No null-suppression operators
59
- - FluentValidation for schema validation
60
-
61
- *Examples (JavaScript/TypeScript):*
62
- - Strict TypeScript mode
63
- - Functional components with hooks (React)
64
- - Async/await over promises
65
- - ESM imports
66
-
67
- *Examples (Python):*
68
- - Type hints for all public functions
69
- - Dataclasses for structured data
70
- - f-strings for formatting
71
- - PEP 8 compliance
72
-
73
- ---
74
-
75
- ## Quality Priorities
76
-
77
- [User-provided quality focus areas, or "Standard KnowzCode priorities"]
78
-
79
- *Rank your top priorities (1-5):*
80
- 1. [e.g., Reliability / Security / Performance / Maintainability / Testability]
81
- 2. [...]
82
- 3. [...]
83
- 4. [...]
84
- 5. [...]
85
-
86
- ---
87
-
88
- ## Project-Specific Conventions
89
-
90
- [Any project-specific rules or patterns, or "See project CLAUDE.md"]
91
-
92
- *Examples:*
93
- - Database migrations must be reviewed before merge
94
- - All API endpoints require OpenAPI documentation
95
- - Error handling uses Result types (no exceptions)
96
- - Logging format: structured JSON with correlation IDs
97
-
98
- ---
99
-
100
- ## Integration with KnowzCode
101
-
102
- **Non-Negotiable (KnowzCode Framework):**
103
- - Test-Driven Development (TDD) is mandatory
104
- - Quality gates must pass at each phase
105
- - Living documentation must be maintained
106
- - Incremental verified progress required
107
-
108
- **Flexible (Your Preferences):**
109
- - Testing framework choice (as long as TDD followed)
110
- - Code style and naming conventions
111
- - Language-specific patterns
112
- - Quality priority ranking
113
- - Project-specific conventions
114
-
115
- **Conflict Resolution:**
116
- When your preferences conflict with KnowzCode requirements, the framework takes precedence for workflow aspects (TDD, quality gates), but your preferences apply for implementation style (naming, patterns, tools).
117
-
118
- ---
119
-
120
- *This document should be reviewed and updated as project conventions evolve.*
1
+ # User Development Preferences
2
+
3
+ ---
4
+
5
+ **Purpose:** This document captures your personal development preferences and coding standards. These preferences integrate with KnowzCode's workflow while respecting your style and approach.
6
+
7
+ **Last Updated:** [ISO timestamp - to be filled during init]
8
+ **Source:** User-provided during initialization
9
+
10
+ ---
11
+
12
+ ## Core Principles
13
+
14
+ [User-provided principles, or "Not configured"]
15
+
16
+ *Examples:*
17
+ - Test-Driven Development (TDD mandatory)
18
+ - Immutable data structures preferred
19
+ - Functional programming patterns
20
+ - Domain-Driven Design (DDD)
21
+ - SOLID principles
22
+
23
+ ---
24
+
25
+ ## Testing Approach
26
+
27
+ [User-provided testing preferences, or "Follows KnowzCode TDD requirements"]
28
+
29
+ *Examples:*
30
+ - **Framework:** XUnit / Jest / PyTest / Playwright
31
+ - **Style:** Behavior-driven / Unit-first / Integration-focused
32
+ - **Coverage:** Minimum 80% / All public APIs / Critical paths only
33
+ - **Patterns:** AAA (Arrange-Act-Assert) / Given-When-Then
34
+ - **Mocking:** Moq / Jest mocks / unittest.mock
35
+
36
+ ---
37
+
38
+ ## Code Style
39
+
40
+ [User-provided style preferences, or "Standard for language/framework"]
41
+
42
+ *Examples:*
43
+ - **Naming:** PascalCase for methods, camelCase for variables
44
+ - **Structure:** Small functions (max 20 lines), single responsibility
45
+ - **Comments:** Self-documenting code, minimal comments
46
+ - **Formatting:** Prettier / Black / Standard formatter
47
+ - **Linting:** ESLint / Flake8 / Custom rules
48
+
49
+ ---
50
+
51
+ ## Language-Specific Patterns
52
+
53
+ [User-provided language-specific preferences, or "N/A"]
54
+
55
+ *Examples (C#):*
56
+ - Nullable reference types always enabled
57
+ - Records for immutable DTOs
58
+ - No null-suppression operators
59
+ - FluentValidation for schema validation
60
+
61
+ *Examples (JavaScript/TypeScript):*
62
+ - Strict TypeScript mode
63
+ - Functional components with hooks (React)
64
+ - Async/await over promises
65
+ - ESM imports
66
+
67
+ *Examples (Python):*
68
+ - Type hints for all public functions
69
+ - Dataclasses for structured data
70
+ - f-strings for formatting
71
+ - PEP 8 compliance
72
+
73
+ ---
74
+
75
+ ## Quality Priorities
76
+
77
+ [User-provided quality focus areas, or "Standard KnowzCode priorities"]
78
+
79
+ *Rank your top priorities (1-5):*
80
+ 1. [e.g., Reliability / Security / Performance / Maintainability / Testability]
81
+ 2. [...]
82
+ 3. [...]
83
+ 4. [...]
84
+ 5. [...]
85
+
86
+ ---
87
+
88
+ ## Project-Specific Conventions
89
+
90
+ [Any project-specific rules or patterns, or "See project CLAUDE.md"]
91
+
92
+ *Examples:*
93
+ - Database migrations must be reviewed before merge
94
+ - All API endpoints require OpenAPI documentation
95
+ - Error handling uses Result types (no exceptions)
96
+ - Logging format: structured JSON with correlation IDs
97
+
98
+ ---
99
+
100
+ ## Integration with KnowzCode
101
+
102
+ **Non-Negotiable (KnowzCode Framework):**
103
+ - Test-Driven Development (TDD) is mandatory
104
+ - Quality gates must pass at each phase
105
+ - Living documentation must be maintained
106
+ - Incremental verified progress required
107
+
108
+ **Flexible (Your Preferences):**
109
+ - Testing framework choice (as long as TDD followed)
110
+ - Code style and naming conventions
111
+ - Language-specific patterns
112
+ - Quality priority ranking
113
+ - Project-specific conventions
114
+
115
+ **Conflict Resolution:**
116
+ When your preferences conflict with KnowzCode requirements, the framework takes precedence for workflow aspects (TDD, quality gates), but your preferences apply for implementation style (naming, patterns, tools).
117
+
118
+ ---
119
+
120
+ *This document should be reviewed and updated as project conventions evolve.*
package/package.json CHANGED
@@ -1,53 +1,53 @@
1
- {
2
- "name": "knowzcode",
3
- "version": "0.4.0",
4
- "description": "Platform-agnostic AI development methodology with TDD, quality gates, and structured workflows",
5
- "type": "module",
6
- "bin": {
7
- "knowzcode": "./bin/knowzcode.mjs"
8
- },
9
- "files": [
10
- "bin/",
11
- "knowzcode/",
12
- "agents/",
13
- "commands/",
14
- "skills/",
15
- ".claude-plugin/"
16
- ],
17
- "scripts": {
18
- "prepublishOnly": "node bin/knowzcode.mjs --version"
19
- },
20
- "keywords": [
21
- "ai",
22
- "tdd",
23
- "workflow",
24
- "methodology",
25
- "quality-gates",
26
- "platform-agnostic",
27
- "claude",
28
- "codex",
29
- "gemini",
30
- "cursor",
31
- "copilot",
32
- "windsurf",
33
- "development"
34
- ],
35
- "author": {
36
- "name": "Alex Headscarf"
37
- },
38
- "homepage": "https://github.com/knowz-io/knowzcode",
39
- "bugs": {
40
- "url": "https://github.com/knowz-io/knowzcode/issues"
41
- },
42
- "repository": {
43
- "type": "git",
44
- "url": "git+https://github.com/knowz-io/knowzcode.git"
45
- },
46
- "publishConfig": {
47
- "access": "public"
48
- },
49
- "license": "MIT",
50
- "engines": {
51
- "node": ">=18"
52
- }
53
- }
1
+ {
2
+ "name": "knowzcode",
3
+ "version": "0.5.2",
4
+ "description": "Platform-agnostic AI development methodology with TDD, quality gates, and structured workflows",
5
+ "type": "module",
6
+ "bin": {
7
+ "knowzcode": "./bin/knowzcode.mjs"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "knowzcode/",
12
+ "agents/",
13
+ "commands/",
14
+ "skills/",
15
+ ".claude-plugin/"
16
+ ],
17
+ "scripts": {
18
+ "prepublishOnly": "node bin/knowzcode.mjs --version"
19
+ },
20
+ "keywords": [
21
+ "ai",
22
+ "tdd",
23
+ "workflow",
24
+ "methodology",
25
+ "quality-gates",
26
+ "platform-agnostic",
27
+ "claude",
28
+ "codex",
29
+ "gemini",
30
+ "cursor",
31
+ "copilot",
32
+ "windsurf",
33
+ "development"
34
+ ],
35
+ "author": {
36
+ "name": "Alex Headscarf"
37
+ },
38
+ "homepage": "https://github.com/knowz-io/knowzcode",
39
+ "bugs": {
40
+ "url": "https://github.com/knowz-io/knowzcode/issues"
41
+ },
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "git+https://github.com/knowz-io/knowzcode.git"
45
+ },
46
+ "publishConfig": {
47
+ "access": "public"
48
+ },
49
+ "license": "MIT",
50
+ "engines": {
51
+ "node": ">=18"
52
+ }
53
+ }
@@ -1,15 +1,15 @@
1
- {
2
- "name": "alias-resolver",
3
- "version": "0.4.0",
4
- "description": "Resolves friendly natural-language aliases to KnowzCode canonical values (phase, audit, plan, workgroup_type).",
5
- "parameters": [
6
- {"name": "domain", "type": "string", "required": true},
7
- {"name": "text", "type": "string", "required": false}
8
- ],
9
- "actions": [
10
- {
11
- "type": "python",
12
- "code": "domain = (inputs.get('domain') or '').strip().lower()\ntext = (inputs.get('text') or '').strip().lower()\nresult = {'value': None}\nphase_map = {\n '1a': {'agent': 'analyst', 'prompt': 'knowzcode/prompts/[LOOP_1A]__Propose_Change_Set.md'},\n '1b': {'agent': 'architect', 'prompt': 'knowzcode/prompts/[LOOP_1B]__Draft_Specs.md'},\n '2a': {'agent': 'builder', 'prompt': 'knowzcode/prompts/[LOOP_2A]__Implement_Change_Set.md'},\n '2b': {'agent': 'reviewer', 'prompt': 'knowzcode/prompts/[LOOP_2B]__Verify_Implementation.md'},\n '3': {'agent': 'closer', 'prompt': 'knowzcode/prompts/[LOOP_3]__Finalize_And_Commit.md'}\n}\nphase_synonyms = {\n '1a': ['1a','loop 1a','analyze','analysis','impact','scope','change set','proposal'],\n '1b': ['1b','loop 1b','spec','specs','draft','design','blueprint'],\n '2a': ['2a','loop 2a','implement','implementation','build','code','develop'],\n '2b': ['2b','loop 2b','verify','verification','audit','test','qa','review'],\n '3': ['3','loop 3','final','finalize','finalization','commit','wrap up','close']\n}\naudit_map = {\n 'spec': 'knowzcode/prompts/Spec_Verification_Checkpoint.md',\n 'implementation': 'knowzcode/prompts/[LOOP_2B]__Verify_Implementation.md',\n 'architecture': None,\n 'security': None,\n 'integration': None\n}\naudit_synonyms = {\n 'spec': ['spec','specs','specification','checkpoint'],\n 'implementation': ['implementation','code','verify implementation','loop 2b'],\n 'architecture': ['architecture','arch','diagram','flowchart','structure'],\n 'security': ['security','sec','owasp','vulnerability'],\n 'integration': ['integration','holistic','system','end to end','e2e']\n}\nworkgroup_map = {'feat': 'feat','feature': 'feat','fix': 'fix','bug': 'fix','bugfix': 'fix','refactor': 'refactor','cleanup': 'refactor','issue': 'issue','incident': 'issue'}\nif domain == 'phase':\n if not text:\n key = '1a'\n else:\n key = None\n for canonical, synonyms in phase_synonyms.items():\n if text == canonical or text in synonyms or any(s in text for s in synonyms):\n key = canonical\n break\n if key is None:\n for canonical in phase_map.keys():\n if text.replace(' ','') == canonical:\n key = canonical\n break\n if key is None:\n key = '1a'\n data = phase_map[key]\n result['value'] = key.upper()\n result['prompt'] = data['prompt']\n result['agent'] = data['agent']\n result['requires_workgroup'] = data['agent'] != 'analyst'\nelif domain == 'audit':\n if not text:\n key = 'spec'\n else:\n key = None\n for canonical, synonyms in audit_synonyms.items():\n if text == canonical or text in synonyms or any(s in text for s in synonyms):\n key = canonical\n break\n if key is None:\n key = 'spec'\n result['value'] = key\n result['prompt'] = audit_map.get(key)\n result['agent'] = 'reviewer'\nelif domain == 'plan':\n result['value'] = text or ''\n result['prompt'] = None\nelif domain == 'workgroup_type':\n if not text:\n value = 'feat'\n else:\n value = None\n for key, mapped in workgroup_map.items():\n if text == key or key in text:\n value = mapped\n break\n if value is None:\n value = workgroup_map.get(text, 'feat')\n result['value'] = value\nelse:\n result['value'] = text or ''\noutputs.update(result)\n"
13
- }
14
- ]
15
- }
1
+ {
2
+ "name": "alias-resolver",
3
+ "version": "0.5.2",
4
+ "description": "Resolves friendly natural-language aliases to KnowzCode canonical values (phase, audit, plan, workgroup_type).",
5
+ "parameters": [
6
+ {"name": "domain", "type": "string", "required": true},
7
+ {"name": "text", "type": "string", "required": false}
8
+ ],
9
+ "actions": [
10
+ {
11
+ "type": "python",
12
+ "code": "domain = (inputs.get('domain') or '').strip().lower()\ntext = (inputs.get('text') or '').strip().lower()\nresult = {'value': None}\nphase_map = {\n '1a': {'agent': 'analyst', 'prompt': 'knowzcode/prompts/[LOOP_1A]__Propose_Change_Set.md'},\n '1b': {'agent': 'architect', 'prompt': 'knowzcode/prompts/[LOOP_1B]__Draft_Specs.md'},\n '2a': {'agent': 'builder', 'prompt': 'knowzcode/prompts/[LOOP_2A]__Implement_Change_Set.md'},\n '2b': {'agent': 'reviewer', 'prompt': 'knowzcode/prompts/[LOOP_2B]__Verify_Implementation.md'},\n '3': {'agent': 'closer', 'prompt': 'knowzcode/prompts/[LOOP_3]__Finalize_And_Commit.md'}\n}\nphase_synonyms = {\n '1a': ['1a','loop 1a','analyze','analysis','impact','scope','change set','proposal'],\n '1b': ['1b','loop 1b','spec','specs','draft','design','blueprint'],\n '2a': ['2a','loop 2a','implement','implementation','build','code','develop'],\n '2b': ['2b','loop 2b','verify','verification','audit','test','qa','review'],\n '3': ['3','loop 3','final','finalize','finalization','commit','wrap up','close']\n}\naudit_map = {\n 'spec': 'knowzcode/prompts/Spec_Verification_Checkpoint.md',\n 'implementation': 'knowzcode/prompts/[LOOP_2B]__Verify_Implementation.md',\n 'architecture': None,\n 'security': None,\n 'integration': None\n}\naudit_synonyms = {\n 'spec': ['spec','specs','specification','checkpoint'],\n 'implementation': ['implementation','code','verify implementation','loop 2b'],\n 'architecture': ['architecture','arch','diagram','flowchart','structure'],\n 'security': ['security','sec','owasp','vulnerability'],\n 'integration': ['integration','holistic','system','end to end','e2e']\n}\nworkgroup_map = {'feat': 'feat','feature': 'feat','fix': 'fix','bug': 'fix','bugfix': 'fix','refactor': 'refactor','cleanup': 'refactor','issue': 'issue','incident': 'issue'}\nif domain == 'phase':\n if not text:\n key = '1a'\n else:\n key = None\n for canonical, synonyms in phase_synonyms.items():\n if text == canonical or text in synonyms or any(s in text for s in synonyms):\n key = canonical\n break\n if key is None:\n for canonical in phase_map.keys():\n if text.replace(' ','') == canonical:\n key = canonical\n break\n if key is None:\n key = '1a'\n data = phase_map[key]\n result['value'] = key.upper()\n result['prompt'] = data['prompt']\n result['agent'] = data['agent']\n result['requires_workgroup'] = data['agent'] != 'analyst'\nelif domain == 'audit':\n if not text:\n key = 'spec'\n else:\n key = None\n for canonical, synonyms in audit_synonyms.items():\n if text == canonical or text in synonyms or any(s in text for s in synonyms):\n key = canonical\n break\n if key is None:\n key = 'spec'\n result['value'] = key\n result['prompt'] = audit_map.get(key)\n result['agent'] = 'reviewer'\nelif domain == 'plan':\n result['value'] = text or ''\n result['prompt'] = None\nelif domain == 'workgroup_type':\n if not text:\n value = 'feat'\n else:\n value = None\n for key, mapped in workgroup_map.items():\n if text == key or key in text:\n value = mapped\n break\n if value is None:\n value = workgroup_map.get(text, 'feat')\n result['value'] = value\nelse:\n result['value'] = text or ''\noutputs.update(result)\n"
13
+ }
14
+ ]
15
+ }
@@ -1,12 +1,12 @@
1
- {
2
- "name": "architecture-diff",
3
- "version": "0.4.0",
4
- "description": "Highlights differences between specs and the Mermaid flowchart in knowzcode_architecture.md.",
5
- "parameters": [],
6
- "actions": [
7
- {
8
- "type": "python",
9
- "code": "from pathlib import Path\nimport re\narch = Path('knowzcode/knowzcode_architecture.md').read_text()\nspec_paths = list(Path('knowzcode/specs').glob('*.md'))\nnode_ids = {p.stem for p in spec_paths}\nmermaid_nodes = set(re.findall(r'([A-Z]{2,}_[A-Za-z0-9]+)', arch))\nmissing_in_arch = sorted(node_ids - mermaid_nodes)\nmissing_in_specs = sorted(mermaid_nodes - node_ids)\noutputs['missing_in_architecture'] = missing_in_arch\noutputs['missing_specs'] = missing_in_specs\n"
10
- }
11
- ]
12
- }
1
+ {
2
+ "name": "architecture-diff",
3
+ "version": "0.5.2",
4
+ "description": "Highlights differences between specs and the Mermaid flowchart in knowzcode_architecture.md.",
5
+ "parameters": [],
6
+ "actions": [
7
+ {
8
+ "type": "python",
9
+ "code": "from pathlib import Path\nimport re\narch = Path('knowzcode/knowzcode_architecture.md').read_text()\nspec_paths = list(Path('knowzcode/specs').glob('*.md'))\nnode_ids = {p.stem for p in spec_paths}\nmermaid_nodes = set(re.findall(r'([A-Z]{2,}_[A-Za-z0-9]+)', arch))\nmissing_in_arch = sorted(node_ids - mermaid_nodes)\nmissing_in_specs = sorted(mermaid_nodes - node_ids)\noutputs['missing_in_architecture'] = missing_in_arch\noutputs['missing_specs'] = missing_in_specs\n"
10
+ }
11
+ ]
12
+ }
@@ -1,14 +1,14 @@
1
- {
2
- "name": "check-installation-status",
3
- "version": "0.4.0",
4
- "description": "Checks if KnowzCode is initialized in the current project and reports current status",
5
-
6
- "parameters": [],
7
-
8
- "actions": [
9
- {
10
- "type": "python",
11
- "code": "from pathlib import Path\n\nknowzcode_dir = Path('knowzcode')\n\nif not knowzcode_dir.exists():\n outputs['initialized'] = False\n outputs['commands_count'] = 0\n outputs['skills_count'] = 0\n outputs['agents_count'] = 0\n outputs['has_required_files'] = False\n exit()\n\n# Check required files exist\nrequired_files = [\n 'knowzcode_loop.md',\n 'knowzcode_tracker.md',\n 'knowzcode_project.md',\n 'knowzcode_architecture.md'\n]\n\nmissing_files = [f for f in required_files if not (knowzcode_dir / f).exists()]\nhas_required_files = len(missing_files) == 0\n\n# Count components from various possible locations\n\n# Check .claude directory\nclaude_dir = Path('.claude')\ncommands_count = 0\nskills_count = 0\nagents_count = 0\n\nif claude_dir.exists():\n if (claude_dir / 'commands').exists():\n commands_count = len(list((claude_dir / 'commands').glob('*.md')))\n if (claude_dir / 'skills').exists():\n skills_count = len(list((claude_dir / 'skills').glob('*.json')))\n if (claude_dir / 'agents').exists():\n agents_count = len(list((claude_dir / 'agents').glob('*.md')))\n if (claude_dir / 'subagents').exists():\n agents_count += len(list((claude_dir / 'subagents').glob('*.yaml')))\n\n# Also check top-level directories (plugin installation)\nif Path('commands').exists():\n commands_count = max(commands_count, len(list(Path('commands').glob('*.md'))))\nif Path('skills').exists():\n skills_count = max(skills_count, len(list(Path('skills').glob('*.json'))))\nif Path('agents').exists():\n agents_count = max(agents_count, len(list(Path('agents').glob('*.md'))))\n\noutputs['initialized'] = has_required_files\noutputs['commands_count'] = commands_count\noutputs['skills_count'] = skills_count\noutputs['agents_count'] = agents_count\noutputs['has_required_files'] = has_required_files\noutputs['missing_files'] = missing_files if missing_files else None"
12
- }
13
- ]
14
- }
1
+ {
2
+ "name": "check-installation-status",
3
+ "version": "0.5.2",
4
+ "description": "Checks if KnowzCode is initialized in the current project and reports current status",
5
+
6
+ "parameters": [],
7
+
8
+ "actions": [
9
+ {
10
+ "type": "python",
11
+ "code": "from pathlib import Path\n\nknowzcode_dir = Path('knowzcode')\n\nif not knowzcode_dir.exists():\n outputs['initialized'] = False\n outputs['commands_count'] = 0\n outputs['skills_count'] = 0\n outputs['agents_count'] = 0\n outputs['has_required_files'] = False\n exit()\n\n# Check required files exist\nrequired_files = [\n 'knowzcode_loop.md',\n 'knowzcode_tracker.md',\n 'knowzcode_project.md',\n 'knowzcode_architecture.md'\n]\n\nmissing_files = [f for f in required_files if not (knowzcode_dir / f).exists()]\nhas_required_files = len(missing_files) == 0\n\n# Count components from various possible locations\n\n# Check .claude directory\nclaude_dir = Path('.claude')\ncommands_count = 0\nskills_count = 0\nagents_count = 0\n\nif claude_dir.exists():\n if (claude_dir / 'commands').exists():\n commands_count = len(list((claude_dir / 'commands').glob('*.md')))\n if (claude_dir / 'skills').exists():\n skills_count = len(list((claude_dir / 'skills').glob('*.json')))\n if (claude_dir / 'agents').exists():\n agents_count = len(list((claude_dir / 'agents').glob('*.md')))\n if (claude_dir / 'subagents').exists():\n agents_count += len(list((claude_dir / 'subagents').glob('*.yaml')))\n\n# Also check top-level directories (plugin installation)\nif Path('commands').exists():\n commands_count = max(commands_count, len(list(Path('commands').glob('*.md'))))\nif Path('skills').exists():\n skills_count = max(skills_count, len(list(Path('skills').glob('*.json'))))\nif Path('agents').exists():\n agents_count = max(agents_count, len(list(Path('agents').glob('*.md'))))\n\noutputs['initialized'] = has_required_files\noutputs['commands_count'] = commands_count\noutputs['skills_count'] = skills_count\noutputs['agents_count'] = agents_count\noutputs['has_required_files'] = has_required_files\noutputs['missing_files'] = missing_files if missing_files else None"
12
+ }
13
+ ]
14
+ }