@aryaminus/controlkeel-opencode 0.3.12 → 0.3.13
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/.opencode/skills/agent-integration/SKILL.md +21 -0
- package/.opencode/skills/agent-pattern-verification/SKILL.md +355 -0
- package/.opencode/skills/agent-pattern-verification/references/pattern-checklist.md +501 -0
- package/.opencode/skills/align/SKILL.md +24 -2
- package/.opencode/skills/benchmark-operator/SKILL.md +21 -0
- package/.opencode/skills/compliance-audit/SKILL.md +21 -0
- package/.opencode/skills/controlkeel-governance/SKILL.md +22 -1
- package/.opencode/skills/cost-optimization/SKILL.md +21 -0
- package/.opencode/skills/domain-audit/SKILL.md +21 -0
- package/.opencode/skills/handoff/SKILL.md +21 -0
- package/.opencode/skills/plan-slice/SKILL.md +44 -5
- package/.opencode/skills/policy-training/SKILL.md +21 -0
- package/.opencode/skills/proof-memory/SKILL.md +21 -0
- package/.opencode/skills/security-review/SKILL.md +79 -6
- package/.opencode/skills/security-review/references/anti-rationalization-patterns.md +59 -0
- package/.opencode/skills/ship-readiness/SKILL.md +21 -0
- package/package.json +1 -1
|
@@ -11,6 +11,27 @@ compatibility:
|
|
|
11
11
|
- copilot-plugin
|
|
12
12
|
- github-repo
|
|
13
13
|
- open-standard
|
|
14
|
+
- cline-native
|
|
15
|
+
- cursor-native
|
|
16
|
+
- windsurf-native
|
|
17
|
+
- continue-native
|
|
18
|
+
- letta-code-native
|
|
19
|
+
- pi-native
|
|
20
|
+
- roo-native
|
|
21
|
+
- goose-native
|
|
22
|
+
- opencode-native
|
|
23
|
+
- gemini-cli-native
|
|
24
|
+
- kiro-native
|
|
25
|
+
- kilo-native
|
|
26
|
+
- amp-native
|
|
27
|
+
- augment-native
|
|
28
|
+
- hermes-native
|
|
29
|
+
- multica-native
|
|
30
|
+
- openclaw-native
|
|
31
|
+
- devin-terminal-native
|
|
32
|
+
- warp-native
|
|
33
|
+
- droid-bundle
|
|
34
|
+
- forge-acp
|
|
14
35
|
metadata:
|
|
15
36
|
author: controlkeel
|
|
16
37
|
version: "1.0"
|
|
@@ -92,17 +113,35 @@ Map each slice to a CK autonomy profile:
|
|
|
92
113
|
|
|
93
114
|
Never label a slice AFK if it contains an unresolved unknown from the `align` step.
|
|
94
115
|
|
|
95
|
-
### 7.
|
|
96
|
-
|
|
116
|
+
### 7. Define success criteria for each slice
|
|
117
|
+
|
|
118
|
+
For every slice, convert vague requirements into concrete, testable conditions:
|
|
119
|
+
|
|
120
|
+
**Example:**
|
|
121
|
+
```
|
|
122
|
+
VAGUE: "Make the dashboard faster"
|
|
123
|
+
REFRAMED SUCCESS CRITERIA:
|
|
124
|
+
- Dashboard LCP < 2.5s on 4G connection
|
|
125
|
+
- Initial data load completes in < 500ms
|
|
126
|
+
- No layout shift during load (CLS < 0.1)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Each slice must have:
|
|
130
|
+
- Observable success condition (what you can measure or verify)
|
|
131
|
+
- Failure condition (what would indicate the slice is not done)
|
|
132
|
+
- Edge case coverage (what breaks if inputs are invalid)
|
|
133
|
+
|
|
134
|
+
### 8. Record the plan
|
|
135
|
+
Call `ck_memory_record` (type: `decision`) with the full slice plan: slice titles, layer coverage, blocking relationships, autonomy labels, and success criteria.
|
|
97
136
|
|
|
98
137
|
Update the `ck_goal` record (mode: `update_status`) with `active` and a progress note pointing to the slice plan.
|
|
99
138
|
|
|
100
|
-
###
|
|
139
|
+
### 9. Submit for human approval
|
|
101
140
|
|
|
102
141
|
Call `ck_review_submit` with:
|
|
103
142
|
- `review_type`: `plan`
|
|
104
143
|
- `plan_phase`: `implementation_plan`
|
|
105
|
-
- `implementation_steps`: the slice list with blocking relationships and
|
|
144
|
+
- `implementation_steps`: the slice list with blocking relationships, autonomy labels, and success criteria
|
|
106
145
|
- `validation_plan`: which tests or observables prove each slice is done
|
|
107
146
|
- `alignment_context`: the accepted goal from the `align` step
|
|
108
147
|
- `scope_estimate`: number of slices, estimated touch points per layer
|
|
@@ -121,7 +160,7 @@ Then call `ck_review_status` to check for `grill_questions`. Surface every grill
|
|
|
121
160
|
|
|
122
161
|
At the end of this skill:
|
|
123
162
|
- A reviewed and approved slice plan (via `ck_review_submit`).
|
|
124
|
-
- A `ck_memory_record` containing the DAG: slice titles, layers, dependencies, autonomy labels.
|
|
163
|
+
- A `ck_memory_record` containing the DAG: slice titles, layers, dependencies, autonomy labels, and success criteria.
|
|
125
164
|
- A `ck_goal` update marking the plan as active.
|
|
126
165
|
- A clear first slice ready for handoff to implementation (via `ck_delegate` or direct agent work under the governance skill).
|
|
127
166
|
|
|
@@ -11,6 +11,27 @@ compatibility:
|
|
|
11
11
|
- copilot-plugin
|
|
12
12
|
- github-repo
|
|
13
13
|
- open-standard
|
|
14
|
+
- cline-native
|
|
15
|
+
- cursor-native
|
|
16
|
+
- windsurf-native
|
|
17
|
+
- continue-native
|
|
18
|
+
- letta-code-native
|
|
19
|
+
- pi-native
|
|
20
|
+
- roo-native
|
|
21
|
+
- goose-native
|
|
22
|
+
- opencode-native
|
|
23
|
+
- gemini-cli-native
|
|
24
|
+
- kiro-native
|
|
25
|
+
- kilo-native
|
|
26
|
+
- amp-native
|
|
27
|
+
- augment-native
|
|
28
|
+
- hermes-native
|
|
29
|
+
- multica-native
|
|
30
|
+
- openclaw-native
|
|
31
|
+
- devin-terminal-native
|
|
32
|
+
- warp-native
|
|
33
|
+
- droid-bundle
|
|
34
|
+
- forge-acp
|
|
14
35
|
disable-model-invocation: true
|
|
15
36
|
metadata:
|
|
16
37
|
author: controlkeel
|
|
@@ -11,6 +11,27 @@ compatibility:
|
|
|
11
11
|
- copilot-plugin
|
|
12
12
|
- github-repo
|
|
13
13
|
- open-standard
|
|
14
|
+
- cline-native
|
|
15
|
+
- cursor-native
|
|
16
|
+
- windsurf-native
|
|
17
|
+
- continue-native
|
|
18
|
+
- letta-code-native
|
|
19
|
+
- pi-native
|
|
20
|
+
- roo-native
|
|
21
|
+
- goose-native
|
|
22
|
+
- opencode-native
|
|
23
|
+
- gemini-cli-native
|
|
24
|
+
- kiro-native
|
|
25
|
+
- kilo-native
|
|
26
|
+
- amp-native
|
|
27
|
+
- augment-native
|
|
28
|
+
- hermes-native
|
|
29
|
+
- multica-native
|
|
30
|
+
- openclaw-native
|
|
31
|
+
- devin-terminal-native
|
|
32
|
+
- warp-native
|
|
33
|
+
- droid-bundle
|
|
34
|
+
- forge-acp
|
|
14
35
|
metadata:
|
|
15
36
|
author: controlkeel
|
|
16
37
|
version: "2.0"
|
|
@@ -11,26 +11,99 @@ compatibility:
|
|
|
11
11
|
- copilot-plugin
|
|
12
12
|
- github-repo
|
|
13
13
|
- open-standard
|
|
14
|
+
- cline-native
|
|
15
|
+
- cursor-native
|
|
16
|
+
- windsurf-native
|
|
17
|
+
- continue-native
|
|
18
|
+
- letta-code-native
|
|
19
|
+
- pi-native
|
|
20
|
+
- roo-native
|
|
21
|
+
- goose-native
|
|
22
|
+
- opencode-native
|
|
23
|
+
- gemini-cli-native
|
|
24
|
+
- kiro-native
|
|
25
|
+
- kilo-native
|
|
26
|
+
- amp-native
|
|
27
|
+
- augment-native
|
|
28
|
+
- hermes-native
|
|
29
|
+
- multica-native
|
|
30
|
+
- openclaw-native
|
|
31
|
+
- devin-terminal-native
|
|
32
|
+
- warp-native
|
|
33
|
+
- droid-bundle
|
|
34
|
+
- forge-acp
|
|
14
35
|
metadata:
|
|
15
36
|
author: controlkeel
|
|
16
|
-
version: "2.
|
|
37
|
+
version: "2.1"
|
|
17
38
|
category: security
|
|
18
39
|
ck_mcp_tools:
|
|
19
40
|
- ck_validate
|
|
20
41
|
- ck_context
|
|
21
42
|
- ck_finding
|
|
22
43
|
- ck_regression_result
|
|
44
|
+
related_skills:
|
|
45
|
+
- agent-pattern-verification
|
|
23
46
|
---
|
|
24
47
|
|
|
25
48
|
# Security Review Skill
|
|
26
49
|
|
|
27
50
|
Use this skill before closing a task, approving a proof bundle, or reviewing a risky diff.
|
|
28
51
|
|
|
52
|
+
## Three-Tier Boundary System
|
|
53
|
+
|
|
54
|
+
Apply this explicit boundary system during review:
|
|
55
|
+
|
|
56
|
+
### Always Do (No Exceptions)
|
|
57
|
+
- Validate all external input at system boundaries
|
|
58
|
+
- Parameterize all database queries
|
|
59
|
+
- Encode output to prevent injection
|
|
60
|
+
- Use HTTPS for external communication
|
|
61
|
+
- Hash passwords with strong algorithms
|
|
62
|
+
- Set security headers (CSP, HSTS, X-Frame-Options)
|
|
63
|
+
- Use httpOnly, secure, sameSite cookies for sessions
|
|
64
|
+
- Run dependency audits before releases
|
|
65
|
+
|
|
66
|
+
### Ask First (Requires Human Approval)
|
|
67
|
+
- Adding or changing authentication flows
|
|
68
|
+
- Storing new categories of sensitive data (PII, payment info)
|
|
69
|
+
- Adding new external service integrations
|
|
70
|
+
- Changing CORS configuration
|
|
71
|
+
- Adding file upload handlers
|
|
72
|
+
- Modifying rate limiting or throttling
|
|
73
|
+
- Granting elevated permissions or roles
|
|
74
|
+
|
|
75
|
+
### Never Do
|
|
76
|
+
- Never commit secrets to version control
|
|
77
|
+
- Never log sensitive data (passwords, tokens, full card numbers)
|
|
78
|
+
- Never trust client-side validation as a security boundary
|
|
79
|
+
- Never disable security headers for convenience
|
|
80
|
+
- Never use eval() or innerHTML with user-provided data
|
|
81
|
+
- Never store sessions in client-accessible storage
|
|
82
|
+
- Never expose stack traces or internal error details to users
|
|
83
|
+
|
|
29
84
|
## Review flow
|
|
30
85
|
|
|
31
86
|
1. Call `ck_context` to load the domain pack, risk tier, open findings, instruction hierarchy, and design-drift signals.
|
|
32
|
-
2.
|
|
33
|
-
3.
|
|
34
|
-
4.
|
|
35
|
-
5.
|
|
36
|
-
6.
|
|
87
|
+
2. Check if agent frameworks are detected in workspace context. If agent frameworks (LangGraph, CrewAI, AutoGen, LangChain) are present, activate the agent-pattern-verification skill for additional agent-specific checks.
|
|
88
|
+
3. Run `ck_validate` on the relevant code or config slices, including trust-boundary metadata when the proposed action was influenced by web, tool, skill, or mixed-provenance content.
|
|
89
|
+
4. Apply the three-tier boundary system to classify each finding: always-do, ask-first, or never-do.
|
|
90
|
+
5. Walk the review checklist in [references/review-checklist.md](references/review-checklist.md).
|
|
91
|
+
6. Persist any missed issue with `ck_finding`, including boundary tier classification in metadata.
|
|
92
|
+
7. If external security or regression systems produce exploit or browser evidence, record that through `ck_regression_result` when it affects release readiness.
|
|
93
|
+
8. Summarize blockers, warnings, and follow-up proof requirements, grouped by boundary tier.
|
|
94
|
+
|
|
95
|
+
## Agent Pattern Integration
|
|
96
|
+
|
|
97
|
+
When agent frameworks are detected in the workspace context, this skill automatically includes agent-specific pattern checks:
|
|
98
|
+
|
|
99
|
+
- **Loop Safety**: Detects `while True` without break, recursive calls without depth limits
|
|
100
|
+
- **Retry Limits**: Validates retry decorators have explicit stop conditions
|
|
101
|
+
- **Tool Registry**: Cross-references tool definitions with prompt references
|
|
102
|
+
- **Context Size**: Monitors system prompt and tool description token counts
|
|
103
|
+
- **Graph Cycles**: Analyzes LangGraph graphs for unreachable END nodes
|
|
104
|
+
|
|
105
|
+
These checks complement the baseline security review with agent-specific anti-pattern detection.
|
|
106
|
+
|
|
107
|
+
## Additional resources
|
|
108
|
+
|
|
109
|
+
- For anti-rationalization patterns to help recognize and reject security shortcuts, see [references/anti-rationalization-patterns.md](references/anti-rationalization-patterns.md).
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Anti-Rationalization Patterns
|
|
2
|
+
|
|
3
|
+
This document catalogs common excuses agents give when taking security shortcuts and why they are invalid. Use these patterns when reviewing findings to help agents recognize and reject their own shortcuts.
|
|
4
|
+
|
|
5
|
+
## Security Anti-Rationalizations
|
|
6
|
+
|
|
7
|
+
| Excuse | Why It's Invalid | Correct Response |
|
|
8
|
+
| ------ | ---------------- | ---------------- |
|
|
9
|
+
| "This is an internal tool, security doesn't matter" | Internal tools get compromised. Attackers target the weakest link. Lateral movement starts from trusted internal surfaces. | Apply the same security controls to internal systems as to external ones. |
|
|
10
|
+
| "We'll add security later" | Security retrofitting is 10x harder than building it in. Adding it later means insecure foundations are already load-bearing. | Build security in from the start. Treat every external input as hostile, every secret as sacred. |
|
|
11
|
+
| "No one would try to exploit this" | Automated scanners find everything. Security by obscurity is not security. | Assume hostile probing. Design for adversarial conditions. |
|
|
12
|
+
| "The framework handles security" | Frameworks provide tools, not guarantees. Auto-escaping doesn't help if you bypass it; parameterized queries don't help if you concatenate anyway. | Verify framework security settings. Don't bypass built-in protections. |
|
|
13
|
+
| "It's just a prototype" | Prototypes ship to production. Security habits from day one prevent security debt from day two. | Assume the code will ship. Apply the same standards to prototypes as to production code. |
|
|
14
|
+
| "The data isn't sensitive" | You don't know what future use cases will be. Data becomes sensitive over time and in combination. | Treat all data with appropriate safeguards. Classify and protect accordingly. |
|
|
15
|
+
| "Performance comes first" | Security is a performance requirement, not an optimization. Insecure systems are unusable when breached. | Design security into the architecture. Use security-focused performance patterns. |
|
|
16
|
+
| "It's too much work" | Security debt is more expensive to fix later. Breaches are catastrophic in cost, reputation, and compliance. | Invest in security upfront. It's cheaper than remediation. |
|
|
17
|
+
|
|
18
|
+
## Planning Anti-Rationalizations
|
|
19
|
+
|
|
20
|
+
| Excuse | Why It's Invalid | Correct Response |
|
|
21
|
+
| ------ | ---------------- | ---------------- |
|
|
22
|
+
| "I know what to build, let's just start" | Assumptions become expensive misalignments when caught after implementation. | Surface assumptions explicitly. Get alignment on what, why, and done before coding. |
|
|
23
|
+
| "The requirements are clear enough" | Vague requirements lead to rework. "Faster" is not a success criterion. | Reframe vague requirements into concrete, testable conditions with metrics. |
|
|
24
|
+
| "We can figure out the details later" | Unknowns compound into blocked findings or architectural dead ends. | Identify unknowns explicitly. Spike research before implementation. |
|
|
25
|
+
| "This is a small change, no need to plan" | Small changes can have large surface area. Context matters. | Check touched layers. Even small changes may need review if they cross boundaries. |
|
|
26
|
+
|
|
27
|
+
## Code Quality Anti-Rationalizations
|
|
28
|
+
|
|
29
|
+
| Excuse | Why It's Invalid | Correct Response |
|
|
30
|
+
| ------ | ---------------- | ---------------- |
|
|
31
|
+
| "It works, that's what matters" | Working code that is unmaintainable becomes technical debt. Future changes become exponentially harder. | Write clean, maintainable code. Clarity over cleverness. |
|
|
32
|
+
| "I'll clean it up later" | Code cleanup rarely happens. Technical debt compounds. | Write clean code the first time. Refactor as you go. |
|
|
33
|
+
| "This is a temporary hack" | Temporary code becomes permanent. Hacks accumulate and rot the codebase. | Write production-quality code from the start. If you need a hack, mark it with TODO and a ticket. |
|
|
34
|
+
| "The tests will catch it" | Tests don't catch design flaws, security issues, or performance problems. Quality is more than test coverage. | Apply multiple quality gates: security review, performance analysis, design review. |
|
|
35
|
+
| "Nobody will read this code" | Future you will read this code. Others will maintain it. Code is read more than written. | Write code for humans, not just machines. Document intent. |
|
|
36
|
+
|
|
37
|
+
## Testing Anti-Rationalizations
|
|
38
|
+
|
|
39
|
+
| Excuse | Why It's Invalid | Correct Response |
|
|
40
|
+
| ------ | ---------------- | ---------------- |
|
|
41
|
+
| "I'll test it manually" | Manual testing doesn't scale. Regressions happen. Automation is necessary for confidence. | Write automated tests. Use TDD where appropriate. |
|
|
42
|
+
| "This is too hard to test" | Hard-to-test code is a design smell. It indicates tight coupling and hidden dependencies. | Refactor for testability. Use dependency injection. Isolate side effects. |
|
|
43
|
+
| "The tests are passing, it's fine" | Passing tests don't prove correctness. They only prove the tests pass. | Review test coverage. Test edge cases. Use property-based testing. |
|
|
44
|
+
| "I'll add tests after the feature works" | Tests after the fact are often shallow or skipped. TDD drives better design. | Write tests first or alongside code. Treat tests as part of the feature. |
|
|
45
|
+
|
|
46
|
+
## Usage in Findings
|
|
47
|
+
|
|
48
|
+
When persisting findings with `ck_finding`, include anti-rationalization context in the `plain_message` or `metadata`:
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"category": "security",
|
|
53
|
+
"severity": "warning",
|
|
54
|
+
"plain_message": "Input validation missing at API boundary. Common rationalization: 'I'll add security later' — security is a constraint on every line that touches user data, not a phase.",
|
|
55
|
+
"rule_id": "input-validation-required"
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Including the anti-rationalization in the finding text ensures it surfaces at review time and guides the agent that reads the finding back.
|
|
@@ -11,6 +11,27 @@ compatibility:
|
|
|
11
11
|
- copilot-plugin
|
|
12
12
|
- github-repo
|
|
13
13
|
- open-standard
|
|
14
|
+
- cline-native
|
|
15
|
+
- cursor-native
|
|
16
|
+
- windsurf-native
|
|
17
|
+
- continue-native
|
|
18
|
+
- letta-code-native
|
|
19
|
+
- pi-native
|
|
20
|
+
- roo-native
|
|
21
|
+
- goose-native
|
|
22
|
+
- opencode-native
|
|
23
|
+
- gemini-cli-native
|
|
24
|
+
- kiro-native
|
|
25
|
+
- kilo-native
|
|
26
|
+
- amp-native
|
|
27
|
+
- augment-native
|
|
28
|
+
- hermes-native
|
|
29
|
+
- multica-native
|
|
30
|
+
- openclaw-native
|
|
31
|
+
- devin-terminal-native
|
|
32
|
+
- warp-native
|
|
33
|
+
- droid-bundle
|
|
34
|
+
- forge-acp
|
|
14
35
|
metadata:
|
|
15
36
|
author: controlkeel
|
|
16
37
|
version: "2.0"
|
package/package.json
CHANGED