@aryaminus/controlkeel-opencode 0.3.12 → 0.3.14

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.
@@ -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. Record the plan
96
- Call `ck_memory_record` (type: `decision`) with the full slice plan: slice titles, layer coverage, blocking relationships, and autonomy labels.
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
- ### 8. Submit for human approval
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 autonomy labels
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.0"
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. 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.
33
- 3. Walk the review checklist in [references/review-checklist.md](references/review-checklist.md).
34
- 4. Persist any missed issue with `ck_finding`.
35
- 5. If external security or regression systems produce exploit or browser evidence, record that through `ck_regression_result` when it affects release readiness.
36
- 6. Summarize blockers, warnings, and follow-up proof requirements.
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
@@ -35,5 +35,5 @@
35
35
  "url": "git+https://github.com/aryaminus/controlkeel.git"
36
36
  },
37
37
  "type": "module",
38
- "version": "0.3.12"
38
+ "version": "0.3.14"
39
39
  }