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.
- package/.claude-plugin/marketplace.json +61 -61
- package/.claude-plugin/plugin.json +8 -8
- package/LICENSE +121 -121
- package/README.md +379 -354
- package/agents/analyst.md +114 -114
- package/agents/architect.md +200 -200
- package/agents/builder.md +104 -104
- package/agents/closer.md +177 -177
- package/agents/context-scout.md +54 -54
- package/agents/knowledge-migrator.md +349 -349
- package/agents/knowz-scout.md +83 -83
- package/agents/knowz-scribe.md +180 -180
- package/agents/microfix-specialist.md +135 -135
- package/agents/project-advisor.md +111 -111
- package/agents/reviewer.md +172 -172
- package/agents/security-officer.md +194 -194
- package/agents/test-advisor.md +162 -162
- package/agents/update-coordinator.md +394 -394
- package/bin/knowzcode.mjs +1457 -1199
- package/commands/audit.md +328 -328
- package/commands/connect-mcp.md +574 -549
- package/commands/fix.md +107 -107
- package/commands/init.md +616 -500
- package/commands/learn.md +332 -332
- package/commands/plan.md +272 -272
- package/commands/register.md +757 -733
- package/commands/status.md +338 -309
- package/commands/telemetry-setup.md +368 -368
- package/commands/telemetry.md +188 -188
- package/commands/work.md +1204 -1204
- package/knowzcode/automation_manifest.md +59 -59
- package/knowzcode/claude_code_execution.md +431 -431
- package/knowzcode/copilot_execution.md +231 -231
- package/knowzcode/enterprise/compliance_manifest.md +137 -137
- package/knowzcode/enterprise/compliance_status.md +30 -30
- package/knowzcode/enterprise/guidelines/code-quality.md +67 -67
- package/knowzcode/enterprise/guidelines/security.md +355 -355
- package/knowzcode/enterprise/templates/guideline-template.md +55 -55
- package/knowzcode/gitignore.template +13 -13
- package/knowzcode/knowzcode_architecture.md +51 -51
- package/knowzcode/knowzcode_log.md +142 -142
- package/knowzcode/knowzcode_loop.md +601 -596
- package/knowzcode/knowzcode_orchestration.md +66 -66
- package/knowzcode/knowzcode_project.md +48 -48
- package/knowzcode/knowzcode_tracker.md +40 -40
- package/knowzcode/knowzcode_vaults.md +257 -257
- package/knowzcode/mcp_config.md +196 -191
- package/knowzcode/planning/Readme.md +6 -6
- package/knowzcode/platform_adapters.md +2577 -1260
- package/knowzcode/prompts/Execute_Micro_Fix.md +57 -57
- package/knowzcode/prompts/Investigate_Codebase.md +227 -227
- package/knowzcode/prompts/Migrate_Knowledge.md +301 -301
- package/knowzcode/prompts/Refactor_Node.md +72 -72
- package/knowzcode/prompts/Spec_Verification_Checkpoint.md +59 -59
- package/knowzcode/prompts/[LOOP_1A]__Propose_Change_Set.md +52 -52
- package/knowzcode/prompts/[LOOP_1B]__Draft_Specs.md +75 -75
- package/knowzcode/prompts/[LOOP_2A]__Implement_Change_Set.md +55 -55
- package/knowzcode/prompts/[LOOP_2B]__Verify_Implementation.md +72 -72
- package/knowzcode/prompts/[LOOP_3]__Finalize_And_Commit.md +67 -67
- package/knowzcode/specs/Readme.md +10 -10
- package/knowzcode/telemetry_config.md +89 -89
- package/knowzcode/user_preferences.md +120 -120
- package/package.json +53 -53
- package/skills/alias-resolver.json +15 -15
- package/skills/architecture-diff.json +12 -12
- package/skills/check-installation-status.json +14 -14
- package/skills/continue.md +126 -126
- package/skills/environment-guard.json +12 -12
- package/skills/generate-workgroup-id.json +25 -25
- package/skills/install-knowzcode.json +21 -21
- package/skills/load-core-context.json +18 -18
- package/skills/log-entry-builder.json +15 -15
- package/skills/spec-quality-check.json +14 -14
- package/skills/spec-template.json +15 -15
- package/skills/spec-validator.json +25 -25
- package/skills/start-work.md +224 -224
- package/skills/tracker-scan.json +12 -12
- package/skills/tracker-update.json +28 -28
- 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
|
-
"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
|
-
"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
|
-
"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
|
-
"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
|
+
}
|