@evo-dev/evodev 0.0.1-alpha
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/dist/.agents/plugins/marketplace.json +20 -0
- package/dist/.claude-plugin/marketplace.json +22 -0
- package/dist/assets/agents/review/code-reviewer/examples.md +19 -0
- package/dist/assets/agents/review/code-reviewer/manifest.json +10 -0
- package/dist/assets/agents/review/code-reviewer/prompt.md +59 -0
- package/dist/assets/agents/review/code-reviewer/verification.md +11 -0
- package/dist/assets/skills/coding/engineering-discipline/SKILL.md +63 -0
- package/dist/assets/skills/coding/engineering-discipline/anti-patterns.md +21 -0
- package/dist/assets/skills/coding/engineering-discipline/examples.md +19 -0
- package/dist/assets/skills/coding/engineering-discipline/manifest.json +10 -0
- package/dist/assets/skills/coding/engineering-discipline/verification.md +11 -0
- package/dist/assets/workflows/rd-bug-fix/WORKFLOW.json +45 -0
- package/dist/assets/workflows/rd-code-review/WORKFLOW.json +45 -0
- package/dist/assets/workflows/rd-docs-update/WORKFLOW.json +45 -0
- package/dist/assets/workflows/rd-feature-implementation/WORKFLOW.json +45 -0
- package/dist/assets/workflows/rd-refactor/WORKFLOW.json +45 -0
- package/dist/assets/workflows/rd-release-readiness/WORKFLOW.json +49 -0
- package/dist/assets/workflows/rd-security-boundary-review/WORKFLOW.json +45 -0
- package/dist/assets/workflows/rd-test-generation/WORKFLOW.json +45 -0
- package/dist/evodev +11 -0
- package/dist/index.js +11283 -0
- package/dist/plugins/evodev/.claude-plugin/plugin.json +9 -0
- package/dist/plugins/evodev/.codex-plugin/plugin.json +19 -0
- package/dist/plugins/evodev/hooks/codex-hooks.json +121 -0
- package/dist/plugins/evodev/hooks/codex.ts +257 -0
- package/dist/plugins/evodev/hooks/command-runner.ts +30 -0
- package/dist/plugins/evodev/hooks/detect.ts +101 -0
- package/dist/plugins/evodev/hooks/hooks.json +197 -0
- package/dist/plugins/evodev/hooks/hooks.ts +217 -0
- package/dist/plugins/evodev/hooks/index.ts +52 -0
- package/dist/plugins/evodev/hooks/paths.ts +53 -0
- package/dist/plugins/evodev/hooks/plugin.ts +513 -0
- package/dist/plugins/evodev/hooks/runtime.ts +113 -0
- package/dist/plugins/evodev/hooks/transform-agent.ts +30 -0
- package/dist/plugins/evodev/hooks/transform-skill.ts +18 -0
- package/dist/plugins/evodev/package.json +16 -0
- package/package.json +29 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "evodev",
|
|
3
|
+
"interface": {
|
|
4
|
+
"displayName": "EvoDev Plugins"
|
|
5
|
+
},
|
|
6
|
+
"plugins": [
|
|
7
|
+
{
|
|
8
|
+
"name": "evodev",
|
|
9
|
+
"source": {
|
|
10
|
+
"source": "local",
|
|
11
|
+
"path": "./plugins/evodev"
|
|
12
|
+
},
|
|
13
|
+
"policy": {
|
|
14
|
+
"installation": "AVAILABLE",
|
|
15
|
+
"authentication": "ON_INSTALL"
|
|
16
|
+
},
|
|
17
|
+
"category": "Productivity"
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "evo-dev",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "EvoDev"
|
|
5
|
+
},
|
|
6
|
+
"description": "EvoDev Claude Code hook plugins for AI-assisted R&D workflows.",
|
|
7
|
+
"version": "0.1.0",
|
|
8
|
+
"plugins": [
|
|
9
|
+
{
|
|
10
|
+
"name": "evodev",
|
|
11
|
+
"source": "./packages/plugin",
|
|
12
|
+
"description": "EvoDev hook integration for disciplined AI coding workflows.",
|
|
13
|
+
"version": "0.1.0",
|
|
14
|
+
"author": {
|
|
15
|
+
"name": "EvoDev"
|
|
16
|
+
},
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"category": "Productivity",
|
|
19
|
+
"tags": ["ai-coding", "workflow", "hooks"]
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Code Reviewer Examples
|
|
2
|
+
|
|
3
|
+
## Finding with evidence
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
- HIGH: src/core/assets/scanner.ts:93 Missing entry files are reported, but empty entry files are accepted -> Add or test a non-empty entry requirement if the task gate requires non-empty content.
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
This is useful because it includes severity, location, problem, and an actionable fix.
|
|
10
|
+
|
|
11
|
+
## Scope finding
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
- BLOCKER: packages/plugin/hooks/plugin.ts This task added Claude sync behavior while the current task only allows canonical assets -> Remove plugin implementation from this task and handle it in the plugin sync task.
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Non-finding
|
|
18
|
+
|
|
19
|
+
Do not report “I prefer a different heading style” unless the heading makes the asset invalid, misleading, or hard to transform.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "code-reviewer",
|
|
3
|
+
"name": "Code Reviewer",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"category": "review",
|
|
6
|
+
"description": "A focused code review agent that checks scoped changes for correctness, safety, maintainability, and verification gaps without modifying files.",
|
|
7
|
+
"targets": ["claude"],
|
|
8
|
+
"entry": "prompt.md",
|
|
9
|
+
"license": "MIT"
|
|
10
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Code Reviewer Agent
|
|
2
|
+
|
|
3
|
+
## Role
|
|
4
|
+
|
|
5
|
+
You are a focused code reviewer for EvoDev-managed work. Review only the provided diff, files, or task scope. Your job is to find actionable defects and boundary violations, not to rewrite the code or expand the feature.
|
|
6
|
+
|
|
7
|
+
## Inputs
|
|
8
|
+
|
|
9
|
+
Expect one or more of:
|
|
10
|
+
|
|
11
|
+
- A git diff or list of changed files.
|
|
12
|
+
- The task, todo item, or acceptance criteria being implemented.
|
|
13
|
+
- Relevant source-of-truth documents or acceptance criteria.
|
|
14
|
+
- Test or quality-gate results.
|
|
15
|
+
|
|
16
|
+
If the review scope is unclear, ask for the missing context instead of guessing.
|
|
17
|
+
|
|
18
|
+
## Permissions
|
|
19
|
+
|
|
20
|
+
- Read code, tests, configuration, and relevant documentation.
|
|
21
|
+
- Run read-only inspection commands and approved local verification commands when available.
|
|
22
|
+
- Do not modify files.
|
|
23
|
+
- Do not create commits.
|
|
24
|
+
- Do not broaden the review into unrelated modules.
|
|
25
|
+
|
|
26
|
+
## Review priorities
|
|
27
|
+
|
|
28
|
+
1. **Correctness:** Does the change do what the task requires? Are edge cases, errors, and data shapes handled correctly?
|
|
29
|
+
2. **Scope control:** Does the diff include unrelated refactors, new features, or future-roadmap work?
|
|
30
|
+
3. **Safety and privacy:** Does the change avoid project-asset writes, user-data collection, secret exposure, and unsafe overwrites?
|
|
31
|
+
4. **Maintainability:** Is the implementation understandable, localized, and consistent with nearby patterns?
|
|
32
|
+
5. **Verification:** Are tests, scanner checks, typecheck, lint, or dry-runs sufficient for the claimed gate?
|
|
33
|
+
|
|
34
|
+
## Severity levels
|
|
35
|
+
|
|
36
|
+
- **BLOCKER:** Must fix before merge or delivery. Includes data loss, privacy boundary violations, project-asset writes outside scope, broken core behavior, or a failed required gate.
|
|
37
|
+
- **HIGH:** Likely user-visible bug, unsafe default, missing required validation, or mismatch with the current acceptance criteria.
|
|
38
|
+
- **MEDIUM:** Maintainability, incomplete edge handling, weak diagnostics, or test gap that should be addressed soon.
|
|
39
|
+
- **LOW:** Minor clarity, naming, or documentation issue. Do not report pure style preference unless it affects comprehension.
|
|
40
|
+
|
|
41
|
+
## Output format
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
DECISION: APPROVE | APPROVE_WITH_CHANGES | REJECT
|
|
45
|
+
FINDINGS:
|
|
46
|
+
- <severity>: <file:line or path> <problem> -> <recommended fix>
|
|
47
|
+
REQUIRED CHANGES: [<change1>, <change2>, ...]
|
|
48
|
+
VERIFICATION: <commands reviewed or run, with PASS/FAIL/not-run>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
If there are no findings, write `FINDINGS: none` and still report verification evidence.
|
|
52
|
+
|
|
53
|
+
## Review rules
|
|
54
|
+
|
|
55
|
+
- Prefer a small number of high-confidence findings over a long list of preferences.
|
|
56
|
+
- Each finding must explain why it matters and how to fix it.
|
|
57
|
+
- Cite a file path and line when possible; use the closest path-level citation when line numbers are unavailable.
|
|
58
|
+
- Distinguish actual defects from optional improvements.
|
|
59
|
+
- Do not claim a command passed unless you observed it pass.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Code Reviewer Verification
|
|
2
|
+
|
|
3
|
+
Before returning a review decision, confirm:
|
|
4
|
+
|
|
5
|
+
1. The reviewed scope matches the assigned task or diff.
|
|
6
|
+
2. Findings are grouped by severity and include a concrete fix.
|
|
7
|
+
3. Blockers cover safety, privacy, user-data, project-asset, and required-gate failures.
|
|
8
|
+
4. Style-only comments are omitted unless they affect correctness or maintainability.
|
|
9
|
+
5. Verification commands are reported with observed PASS, FAIL, or not-run status.
|
|
10
|
+
|
|
11
|
+
Reject the change when a required gate failed, an entry file is missing, or the implementation crosses an explicit project boundary.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: engineering-discipline
|
|
3
|
+
description: Use when implementing, reviewing, or refactoring code to clarify assumptions, avoid overengineering, keep diffs focused, protect scope boundaries, and verify results.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Engineering Discipline
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Engineering Discipline is a practical guardrail for AI-assisted development. It keeps each coding session anchored to the requested outcome, makes assumptions visible, and requires verification before reporting success.
|
|
12
|
+
|
|
13
|
+
## Use this skill when
|
|
14
|
+
|
|
15
|
+
- Implementing a feature, bug fix, refactor, or test change.
|
|
16
|
+
- Reviewing code for correctness, safety, or maintainability.
|
|
17
|
+
- Working under explicit MVP, privacy, release, or project-boundary constraints.
|
|
18
|
+
- A task could expand into speculative architecture or unrelated cleanup.
|
|
19
|
+
|
|
20
|
+
## Do not use this skill for
|
|
21
|
+
|
|
22
|
+
- Pure brainstorming where no code or plan will be produced.
|
|
23
|
+
- Tasks where the user explicitly asks for unconstrained exploration.
|
|
24
|
+
- Replacing product, security, or legal review when those are required.
|
|
25
|
+
|
|
26
|
+
## Core principles
|
|
27
|
+
|
|
28
|
+
### 1. Assumption management
|
|
29
|
+
|
|
30
|
+
State meaningful assumptions before acting. If an assumption changes the user-visible behavior, data boundary, or implementation scope, pause and ask instead of silently guessing.
|
|
31
|
+
|
|
32
|
+
### 2. Simplicity control
|
|
33
|
+
|
|
34
|
+
Prefer the smallest design that satisfies the current acceptance criteria. Avoid framework additions, broad abstractions, and future-facing features unless they are required now.
|
|
35
|
+
|
|
36
|
+
### 3. Diff discipline
|
|
37
|
+
|
|
38
|
+
Every modified file should have a clear reason tied to the task. Avoid drive-by formatting, unrelated refactors, and opportunistic rewrites.
|
|
39
|
+
|
|
40
|
+
### 4. Verification loop
|
|
41
|
+
|
|
42
|
+
Attach each important change to a verification method: test, typecheck, lint, dry-run, manual command, or explicit reason it cannot be run. Do not claim a gate passed unless it was actually executed.
|
|
43
|
+
|
|
44
|
+
### 5. Scope boundary
|
|
45
|
+
|
|
46
|
+
Respect project and privacy boundaries. Do not modify user project assets, user-level Code Agent configuration, secrets, logs, or learning data unless the task explicitly requires it and the relevant safeguards exist.
|
|
47
|
+
|
|
48
|
+
## Operating steps
|
|
49
|
+
|
|
50
|
+
1. Restate the goal and identify the current task, todo item, or acceptance criteria.
|
|
51
|
+
2. Check the nearest source of truth: existing code, tests, implementation notes, or task instructions.
|
|
52
|
+
3. List assumptions and ask when a choice is materially ambiguous.
|
|
53
|
+
4. Make the smallest focused change that satisfies the goal.
|
|
54
|
+
5. Verify with the most relevant local gate.
|
|
55
|
+
6. Report what changed, what was tested, what failed or was skipped, and any remaining risk.
|
|
56
|
+
|
|
57
|
+
## Output checklist
|
|
58
|
+
|
|
59
|
+
- Goal remains unchanged from the request.
|
|
60
|
+
- Modified files are directly related to the goal.
|
|
61
|
+
- New behavior has a validation path.
|
|
62
|
+
- User or project boundaries were not crossed.
|
|
63
|
+
- Final report distinguishes PASS, FAIL, and not-run checks.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Engineering Discipline Anti-Patterns
|
|
2
|
+
|
|
3
|
+
## Scope creep
|
|
4
|
+
|
|
5
|
+
Adding sync, plugin, workflow, or learning behavior while a task only asks for canonical assets.
|
|
6
|
+
|
|
7
|
+
## Silent assumptions
|
|
8
|
+
|
|
9
|
+
Choosing a destructive write path, external dependency, or user-data behavior without explaining the assumption or asking for confirmation.
|
|
10
|
+
|
|
11
|
+
## Diff pollution
|
|
12
|
+
|
|
13
|
+
Formatting unrelated files, renaming public APIs, or refactoring neighboring modules because they were nearby.
|
|
14
|
+
|
|
15
|
+
## Verification theater
|
|
16
|
+
|
|
17
|
+
Reporting success without running the relevant gate, or hiding a failed check behind vague wording.
|
|
18
|
+
|
|
19
|
+
## Boundary violations
|
|
20
|
+
|
|
21
|
+
Writing to project-level `CLAUDE.md`, `AGENTS.md`, `.claude/`, `.codex/`, or user private data unless the user explicitly requested it and the current task permits it.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Engineering Discipline Examples
|
|
2
|
+
|
|
3
|
+
## Focused implementation
|
|
4
|
+
|
|
5
|
+
**Situation:** The task asks for a scanner-valid built-in asset.
|
|
6
|
+
|
|
7
|
+
**Disciplined response:** Add only the asset directory, manifest, entry file, and concise support files. Validate with the asset scanner or project check. Do not implement plugin sync or CLI behavior in the same task.
|
|
8
|
+
|
|
9
|
+
## Assumption handling
|
|
10
|
+
|
|
11
|
+
**Situation:** Two output formats are possible and both affect users.
|
|
12
|
+
|
|
13
|
+
**Disciplined response:** Explain the options and ask for direction, or choose the option already specified by the current source of truth.
|
|
14
|
+
|
|
15
|
+
## Verification report
|
|
16
|
+
|
|
17
|
+
**Good report:** `bun run check` was run and passed. Asset manifests scan with registry keys `coding/engineering-discipline` and `review/code-reviewer`.
|
|
18
|
+
|
|
19
|
+
**Bad report:** “Looks good” without saying what was run or whether any gate failed.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "engineering-discipline",
|
|
3
|
+
"name": "Engineering Discipline",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"category": "coding",
|
|
6
|
+
"description": "Engineering behavior guidelines for safer AI coding: clarify assumptions, keep changes focused, respect scope boundaries, and verify outcomes.",
|
|
7
|
+
"targets": ["claude", "codex"],
|
|
8
|
+
"entry": "SKILL.md",
|
|
9
|
+
"license": "MIT"
|
|
10
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Engineering Discipline Verification
|
|
2
|
+
|
|
3
|
+
Use this quick gate before reporting completion:
|
|
4
|
+
|
|
5
|
+
1. **Scope:** Does every change map to the current request, todo item, or acceptance criteria?
|
|
6
|
+
2. **Safety:** Did the work avoid project assets, secrets, private logs, and user configuration unless explicitly allowed?
|
|
7
|
+
3. **Simplicity:** Is there any new abstraction, dependency, or feature not needed for the current goal?
|
|
8
|
+
4. **Evidence:** Was the most relevant test, typecheck, lint, scanner, or dry-run executed?
|
|
9
|
+
5. **Report:** Are failures and skipped checks stated plainly?
|
|
10
|
+
|
|
11
|
+
If any answer is no, fix the issue or report the remaining risk instead of claiming the gate passed.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rd-bug-fix",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"name": "Bug Fix",
|
|
5
|
+
"description": "Reproduce, root-cause, minimally fix, and verify a bug.",
|
|
6
|
+
"modes": ["standard", "rigorous"],
|
|
7
|
+
"steps": [
|
|
8
|
+
{
|
|
9
|
+
"id": "reproduce",
|
|
10
|
+
"name": "Record reproduction evidence",
|
|
11
|
+
"actor": "human",
|
|
12
|
+
"required": true,
|
|
13
|
+
"evidence": ["repro-summary"],
|
|
14
|
+
"summary": "Summarize repro without raw logs."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "root-cause",
|
|
18
|
+
"name": "Identify root cause",
|
|
19
|
+
"actor": "human",
|
|
20
|
+
"required": true,
|
|
21
|
+
"evidence": ["root-cause-summary"],
|
|
22
|
+
"summary": "Document root cause."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "verify",
|
|
26
|
+
"name": "Regression verification",
|
|
27
|
+
"actor": "tool",
|
|
28
|
+
"required": true,
|
|
29
|
+
"evidence": ["regression-verification"],
|
|
30
|
+
"summary": "Record regression verification summary."
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"requiredEvidence": ["repro-summary", "root-cause-summary", "regression-verification"],
|
|
34
|
+
"verification": {
|
|
35
|
+
"policy": "fail-closed",
|
|
36
|
+
"antiCriteria": ["no-scope-creep", "no-secret-capture"]
|
|
37
|
+
},
|
|
38
|
+
"privacy": {
|
|
39
|
+
"metadataOnly": true,
|
|
40
|
+
"storesRawPrompts": false,
|
|
41
|
+
"storesSourceContent": false,
|
|
42
|
+
"storesRawCommandOutput": false,
|
|
43
|
+
"usesNetwork": false
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rd-code-review",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"name": "Code Review",
|
|
5
|
+
"description": "Review a scoped diff for correctness, risk, and verification gaps.",
|
|
6
|
+
"modes": ["standard", "rigorous"],
|
|
7
|
+
"steps": [
|
|
8
|
+
{
|
|
9
|
+
"id": "scope",
|
|
10
|
+
"name": "Confirm review scope",
|
|
11
|
+
"actor": "human",
|
|
12
|
+
"required": true,
|
|
13
|
+
"evidence": ["review-scope"],
|
|
14
|
+
"summary": "List reviewed files/areas."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "findings",
|
|
18
|
+
"name": "Record findings",
|
|
19
|
+
"actor": "reviewer",
|
|
20
|
+
"required": true,
|
|
21
|
+
"evidence": ["review-findings"],
|
|
22
|
+
"summary": "Structured findings without source excerpts."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "reverify",
|
|
26
|
+
"name": "Re-verify fixes",
|
|
27
|
+
"actor": "tool",
|
|
28
|
+
"required": false,
|
|
29
|
+
"evidence": ["reverification"],
|
|
30
|
+
"summary": "Optional metadata-only re-verification."
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"requiredEvidence": ["review-scope", "review-findings"],
|
|
34
|
+
"verification": {
|
|
35
|
+
"policy": "fail-closed",
|
|
36
|
+
"antiCriteria": ["no-unscoped-review", "no-secret-capture"]
|
|
37
|
+
},
|
|
38
|
+
"privacy": {
|
|
39
|
+
"metadataOnly": true,
|
|
40
|
+
"storesRawPrompts": false,
|
|
41
|
+
"storesSourceContent": false,
|
|
42
|
+
"storesRawCommandOutput": false,
|
|
43
|
+
"usesNetwork": false
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rd-docs-update",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"name": "Docs Update",
|
|
5
|
+
"description": "Update documentation consistently for scoped behavior changes.",
|
|
6
|
+
"modes": ["minimal", "standard"],
|
|
7
|
+
"steps": [
|
|
8
|
+
{
|
|
9
|
+
"id": "scope",
|
|
10
|
+
"name": "Identify docs scope",
|
|
11
|
+
"actor": "human",
|
|
12
|
+
"required": true,
|
|
13
|
+
"evidence": ["docs-scope"],
|
|
14
|
+
"summary": "List docs to update."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "update",
|
|
18
|
+
"name": "Update docs",
|
|
19
|
+
"actor": "human",
|
|
20
|
+
"required": true,
|
|
21
|
+
"evidence": ["docs-change-summary"],
|
|
22
|
+
"summary": "Summarize docs changes."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "check",
|
|
26
|
+
"name": "Check consistency",
|
|
27
|
+
"actor": "human",
|
|
28
|
+
"required": true,
|
|
29
|
+
"evidence": ["consistency-check"],
|
|
30
|
+
"summary": "Record consistency check."
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"requiredEvidence": ["docs-scope", "docs-change-summary", "consistency-check"],
|
|
34
|
+
"verification": {
|
|
35
|
+
"policy": "fail-closed",
|
|
36
|
+
"antiCriteria": ["no-stale-docs", "no-secret-capture"]
|
|
37
|
+
},
|
|
38
|
+
"privacy": {
|
|
39
|
+
"metadataOnly": true,
|
|
40
|
+
"storesRawPrompts": false,
|
|
41
|
+
"storesSourceContent": false,
|
|
42
|
+
"storesRawCommandOutput": false,
|
|
43
|
+
"usesNetwork": false
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rd-feature-implementation",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"name": "Feature Implementation",
|
|
5
|
+
"description": "Plan, implement, verify, review, and document a bounded feature change.",
|
|
6
|
+
"modes": ["standard", "rigorous"],
|
|
7
|
+
"steps": [
|
|
8
|
+
{
|
|
9
|
+
"id": "plan",
|
|
10
|
+
"name": "Plan scoped change",
|
|
11
|
+
"actor": "human",
|
|
12
|
+
"required": true,
|
|
13
|
+
"evidence": ["scope-plan"],
|
|
14
|
+
"summary": "Create implementation plan."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "implement",
|
|
18
|
+
"name": "Implement approved scope",
|
|
19
|
+
"actor": "human",
|
|
20
|
+
"required": true,
|
|
21
|
+
"evidence": ["changed-files-summary"],
|
|
22
|
+
"summary": "Perform approved edits outside EvoDev workflow runtime."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "verify",
|
|
26
|
+
"name": "Verify acceptance and anti-criteria",
|
|
27
|
+
"actor": "tool",
|
|
28
|
+
"required": true,
|
|
29
|
+
"evidence": ["verification-report"],
|
|
30
|
+
"summary": "Record metadata-only verification evidence."
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"requiredEvidence": ["scope-plan", "changed-files-summary", "verification-report"],
|
|
34
|
+
"verification": {
|
|
35
|
+
"policy": "fail-closed",
|
|
36
|
+
"antiCriteria": ["no-unapproved-project-write", "no-secret-capture"]
|
|
37
|
+
},
|
|
38
|
+
"privacy": {
|
|
39
|
+
"metadataOnly": true,
|
|
40
|
+
"storesRawPrompts": false,
|
|
41
|
+
"storesSourceContent": false,
|
|
42
|
+
"storesRawCommandOutput": false,
|
|
43
|
+
"usesNetwork": false
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rd-refactor",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"name": "Refactor",
|
|
5
|
+
"description": "Plan and verify behavior-preserving structural changes.",
|
|
6
|
+
"modes": ["standard", "rigorous"],
|
|
7
|
+
"steps": [
|
|
8
|
+
{
|
|
9
|
+
"id": "behavior-lock",
|
|
10
|
+
"name": "Lock current behavior",
|
|
11
|
+
"actor": "human",
|
|
12
|
+
"required": true,
|
|
13
|
+
"evidence": ["behavior-lock"],
|
|
14
|
+
"summary": "Record behavior assumptions."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "impact-map",
|
|
18
|
+
"name": "Map impact",
|
|
19
|
+
"actor": "human",
|
|
20
|
+
"required": true,
|
|
21
|
+
"evidence": ["impact-map"],
|
|
22
|
+
"summary": "Summarize impacted areas."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "equivalence",
|
|
26
|
+
"name": "Verify equivalence",
|
|
27
|
+
"actor": "tool",
|
|
28
|
+
"required": true,
|
|
29
|
+
"evidence": ["equivalence-verification"],
|
|
30
|
+
"summary": "Record metadata-only verification."
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"requiredEvidence": ["behavior-lock", "impact-map", "equivalence-verification"],
|
|
34
|
+
"verification": {
|
|
35
|
+
"policy": "fail-closed",
|
|
36
|
+
"antiCriteria": ["no-behavior-change", "no-secret-capture"]
|
|
37
|
+
},
|
|
38
|
+
"privacy": {
|
|
39
|
+
"metadataOnly": true,
|
|
40
|
+
"storesRawPrompts": false,
|
|
41
|
+
"storesSourceContent": false,
|
|
42
|
+
"storesRawCommandOutput": false,
|
|
43
|
+
"usesNetwork": false
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rd-release-readiness",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"name": "Release Readiness",
|
|
5
|
+
"description": "Plan release checks, package boundaries, and approval evidence.",
|
|
6
|
+
"modes": ["rigorous"],
|
|
7
|
+
"steps": [
|
|
8
|
+
{
|
|
9
|
+
"id": "quality",
|
|
10
|
+
"name": "Quality gate summary",
|
|
11
|
+
"actor": "tool",
|
|
12
|
+
"required": true,
|
|
13
|
+
"evidence": ["quality-gate-summary"],
|
|
14
|
+
"summary": "Record quality gate metadata."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "package",
|
|
18
|
+
"name": "Package dry-run summary",
|
|
19
|
+
"actor": "tool",
|
|
20
|
+
"required": true,
|
|
21
|
+
"evidence": ["package-dry-run"],
|
|
22
|
+
"summary": "Record package inspection summary."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "approval",
|
|
26
|
+
"name": "Release approval",
|
|
27
|
+
"actor": "human",
|
|
28
|
+
"required": true,
|
|
29
|
+
"evidence": ["release-approval"],
|
|
30
|
+
"summary": "Record explicit release authorization."
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"requiredEvidence": ["quality-gate-summary", "package-dry-run", "release-approval"],
|
|
34
|
+
"verification": {
|
|
35
|
+
"policy": "fail-closed",
|
|
36
|
+
"antiCriteria": [
|
|
37
|
+
"no-npm-publish-without-approval",
|
|
38
|
+
"no-protected-zone-leak",
|
|
39
|
+
"no-secret-capture"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"privacy": {
|
|
43
|
+
"metadataOnly": true,
|
|
44
|
+
"storesRawPrompts": false,
|
|
45
|
+
"storesSourceContent": false,
|
|
46
|
+
"storesRawCommandOutput": false,
|
|
47
|
+
"usesNetwork": false
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rd-security-boundary-review",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"name": "Security Boundary Review",
|
|
5
|
+
"description": "Review privacy, write, publish, and secret boundaries.",
|
|
6
|
+
"modes": ["rigorous"],
|
|
7
|
+
"steps": [
|
|
8
|
+
{
|
|
9
|
+
"id": "data-flow",
|
|
10
|
+
"name": "Review data flow",
|
|
11
|
+
"actor": "reviewer",
|
|
12
|
+
"required": true,
|
|
13
|
+
"evidence": ["data-flow-summary"],
|
|
14
|
+
"summary": "Metadata-only data-flow review."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "write-boundary",
|
|
18
|
+
"name": "Review write boundary",
|
|
19
|
+
"actor": "reviewer",
|
|
20
|
+
"required": true,
|
|
21
|
+
"evidence": ["write-boundary-check"],
|
|
22
|
+
"summary": "Check writes stay in scope."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "decision",
|
|
26
|
+
"name": "Record decision",
|
|
27
|
+
"actor": "human",
|
|
28
|
+
"required": true,
|
|
29
|
+
"evidence": ["security-decision"],
|
|
30
|
+
"summary": "Approve/block with rationale."
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"requiredEvidence": ["data-flow-summary", "write-boundary-check", "security-decision"],
|
|
34
|
+
"verification": {
|
|
35
|
+
"policy": "fail-closed",
|
|
36
|
+
"antiCriteria": ["no-secret-capture", "no-unapproved-write", "no-external-upload"]
|
|
37
|
+
},
|
|
38
|
+
"privacy": {
|
|
39
|
+
"metadataOnly": true,
|
|
40
|
+
"storesRawPrompts": false,
|
|
41
|
+
"storesSourceContent": false,
|
|
42
|
+
"storesRawCommandOutput": false,
|
|
43
|
+
"usesNetwork": false
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "rd-test-generation",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"name": "Test Generation",
|
|
5
|
+
"description": "Identify coverage gaps and plan tests with verification evidence.",
|
|
6
|
+
"modes": ["standard"],
|
|
7
|
+
"steps": [
|
|
8
|
+
{
|
|
9
|
+
"id": "gap",
|
|
10
|
+
"name": "Identify coverage gap",
|
|
11
|
+
"actor": "human",
|
|
12
|
+
"required": true,
|
|
13
|
+
"evidence": ["coverage-gap"],
|
|
14
|
+
"summary": "Summarize gap."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "tests",
|
|
18
|
+
"name": "Plan or add tests",
|
|
19
|
+
"actor": "human",
|
|
20
|
+
"required": true,
|
|
21
|
+
"evidence": ["test-plan"],
|
|
22
|
+
"summary": "Describe tests."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "verify",
|
|
26
|
+
"name": "Verify tests",
|
|
27
|
+
"actor": "tool",
|
|
28
|
+
"required": true,
|
|
29
|
+
"evidence": ["test-output-summary"],
|
|
30
|
+
"summary": "Record test result summary."
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"requiredEvidence": ["coverage-gap", "test-plan", "test-output-summary"],
|
|
34
|
+
"verification": {
|
|
35
|
+
"policy": "fail-closed",
|
|
36
|
+
"antiCriteria": ["no-untested-claim", "no-secret-capture"]
|
|
37
|
+
},
|
|
38
|
+
"privacy": {
|
|
39
|
+
"metadataOnly": true,
|
|
40
|
+
"storesRawPrompts": false,
|
|
41
|
+
"storesSourceContent": false,
|
|
42
|
+
"storesRawCommandOutput": false,
|
|
43
|
+
"usesNetwork": false
|
|
44
|
+
}
|
|
45
|
+
}
|
package/dist/evodev
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
set -eu
|
|
3
|
+
|
|
4
|
+
if ! command -v node >/dev/null 2>&1; then
|
|
5
|
+
echo "EvoDev CLI requires Node.js >=20 to run." >&2
|
|
6
|
+
echo "Install Node.js, then restart your shell and run: evodev doctor." >&2
|
|
7
|
+
exit 1
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
SCRIPT_DIR="$(CDPATH= cd "$(dirname "$0")" && pwd)"
|
|
11
|
+
exec node "$SCRIPT_DIR/index.js" "$@"
|