cc-codeconductor 0.4.3 → 0.5.0
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/README.md +1 -1
- package/dist/index.js +2642 -226
- package/package.json +1 -1
- package/presets/agy/skills/evaluation/SKILL.md +6 -0
- package/presets/agy/skills/openspec/SKILL.md +32 -0
- package/presets/agy/workflows/cc-openspec.md +62 -0
- package/presets/agy/workflows/cc-scorecard.md +17 -0
- package/presets/claude/commands/cc/openspec.md +144 -0
- package/presets/claude/commands/cc/review.md +13 -2
- package/presets/claude/commands/cc/scorecard.md +65 -0
- package/presets/claude/skills/evaluation/SKILL.md +42 -0
- package/presets/claude/skills/openspec/SKILL.md +54 -0
- package/presets/codex/AGENTS.md +57 -0
- package/presets/cursor/.cursorignore +15 -0
- package/presets/cursor/AGENTS.md +504 -0
- package/presets/cursor/agents/architect.md +211 -0
- package/presets/cursor/agents/complexity-auditor.md +76 -0
- package/presets/cursor/agents/contract-builder.md +75 -0
- package/presets/cursor/agents/docs.md +180 -0
- package/presets/cursor/agents/goal-planner.md +71 -0
- package/presets/cursor/agents/implementer.md +161 -0
- package/presets/cursor/agents/orchestrator.md +377 -0
- package/presets/cursor/agents/repo-explorer.md +100 -0
- package/presets/cursor/agents/reviewer.md +237 -0
- package/presets/cursor/agents/security-reviewer.md +113 -0
- package/presets/cursor/agents/task-coach.md +145 -0
- package/presets/cursor/agents/tester.md +241 -0
- package/presets/cursor/commands/cc/api-contract.md +58 -0
- package/presets/cursor/commands/cc/db-migration.md +58 -0
- package/presets/cursor/commands/cc/feature.md +115 -0
- package/presets/cursor/commands/cc/fix.md +121 -0
- package/presets/cursor/commands/cc/openspec.md +144 -0
- package/presets/cursor/commands/cc/pagespeed.md +103 -0
- package/presets/cursor/commands/cc/refactor.md +148 -0
- package/presets/cursor/commands/cc/review.md +137 -0
- package/presets/cursor/commands/cc/scorecard.md +65 -0
- package/presets/cursor/commands/cc/tdd-cycle.md +226 -0
- package/presets/cursor/commands/cc/test-plan.md +138 -0
- package/presets/cursor/rules/behavioral-discipline.mdc +14 -0
- package/presets/cursor/rules/context-budget.mdc +12 -0
- package/presets/cursor/rules/orchestration.mdc +12 -0
- package/presets/cursor/rules/yagni-stdlib.mdc +11 -0
- package/presets/cursor/skills/android/SKILL.md +122 -0
- package/presets/cursor/skills/api-versioning/SKILL.md +394 -0
- package/presets/cursor/skills/astro/SKILL.md +322 -0
- package/presets/cursor/skills/auth-token-inspector/SKILL.md +33 -0
- package/presets/cursor/skills/code-review/SKILL.md +208 -0
- package/presets/cursor/skills/conductor-setup/SKILL.md +127 -0
- package/presets/cursor/skills/django-orm/SKILL.md +463 -0
- package/presets/cursor/skills/django-testing/SKILL.md +417 -0
- package/presets/cursor/skills/django-uv/SKILL.md +409 -0
- package/presets/cursor/skills/drizzle-schema-architect/SKILL.md +54 -0
- package/presets/cursor/skills/evaluation/SKILL.md +8 -0
- package/presets/cursor/skills/fastapi-pydantic-strict/SKILL.md +46 -0
- package/presets/cursor/skills/find-skills/SKILL.md +144 -0
- package/presets/cursor/skills/jpa-nplusone-detector/SKILL.md +49 -0
- package/presets/cursor/skills/jpa-postgres/SKILL.md +626 -0
- package/presets/cursor/skills/laravel-specialist/SKILL.md +267 -0
- package/presets/cursor/skills/laravel-specialist/references/eloquent.md +351 -0
- package/presets/cursor/skills/laravel-specialist/references/livewire.md +512 -0
- package/presets/cursor/skills/laravel-specialist/references/queues.md +423 -0
- package/presets/cursor/skills/laravel-specialist/references/routing.md +362 -0
- package/presets/cursor/skills/laravel-specialist/references/testing.md +522 -0
- package/presets/cursor/skills/livewire-alpine-bridge/SKILL.md +39 -0
- package/presets/cursor/skills/multi-agent-orchestration/README.md +144 -0
- package/presets/cursor/skills/multi-agent-orchestration/SKILL.md +579 -0
- package/presets/cursor/skills/multi-agent-orchestration/examples/framework_implementations.py +362 -0
- package/presets/cursor/skills/multi-agent-orchestration/examples/orchestration_patterns.py +411 -0
- package/presets/cursor/skills/multi-agent-orchestration/scripts/agent_communication.py +334 -0
- package/presets/cursor/skills/multi-agent-orchestration/scripts/benchmarking.py +341 -0
- package/presets/cursor/skills/multi-agent-orchestration/scripts/workflow_management.py +334 -0
- package/presets/cursor/skills/nextjs-typescript/SKILL.md +394 -0
- package/presets/cursor/skills/openspec/SKILL.md +52 -0
- package/presets/cursor/skills/pagespeed-insights/SKILL.md +445 -0
- package/presets/cursor/skills/pagespeed-insights/reference.md +50 -0
- package/presets/cursor/skills/pagespeed-perf/SKILL.md +281 -0
- package/presets/cursor/skills/php-pro/SKILL.md +210 -0
- package/presets/cursor/skills/php-pro/references/async-patterns.md +412 -0
- package/presets/cursor/skills/php-pro/references/laravel-patterns.md +377 -0
- package/presets/cursor/skills/php-pro/references/modern-php-features.md +323 -0
- package/presets/cursor/skills/php-pro/references/symfony-patterns.md +466 -0
- package/presets/cursor/skills/php-pro/references/testing-quality.md +466 -0
- package/presets/cursor/skills/python/SKILL.md +613 -0
- package/presets/cursor/skills/python-django-stack/SKILL.md +500 -0
- package/presets/cursor/skills/python-fastapi-stack/SKILL.md +464 -0
- package/presets/cursor/skills/security/SKILL.md +384 -0
- package/presets/cursor/skills/seo-analytics-injector/SKILL.md +44 -0
- package/presets/cursor/skills/spring-auth-auditor/SKILL.md +33 -0
- package/presets/cursor/skills/spring-boot-feature/SKILL.md +566 -0
- package/presets/cursor/skills/spring-boot-kotlin/SKILL.md +408 -0
- package/presets/cursor/skills/spring-boot-testing-strategy/SKILL.md +479 -0
- package/presets/cursor/skills/sqlalchemy/SKILL.md +473 -0
- package/presets/cursor/skills/tailwind-responsive-auditor/SKILL.md +32 -0
- package/presets/cursor/skills/tdd-mutation-tester/SKILL.md +28 -0
- package/presets/cursor/skills/testing-tdd/SKILL.md +592 -0
- package/presets/cursor/skills/workflow-orchestration-patterns/SKILL.md +98 -0
- package/presets/cursor/skills/workflow-orchestration-patterns/references/details.md +223 -0
- package/presets/opencode/agents/architect.md +1 -2
- package/presets/opencode/agents/complexity-auditor.md +1 -0
- package/presets/opencode/agents/contract-builder.md +93 -0
- package/presets/opencode/agents/docs.md +1 -2
- package/presets/opencode/agents/goal-planner.md +82 -0
- package/presets/opencode/agents/implementer.md +9 -2
- package/presets/opencode/agents/orchestrator.md +50 -12
- package/presets/opencode/agents/repo-explorer.md +0 -1
- package/presets/opencode/agents/reviewer.md +23 -2
- package/presets/opencode/agents/security-reviewer.md +129 -0
- package/presets/opencode/agents/task-coach.md +1 -2
- package/presets/opencode/agents/tester.md +1 -2
- package/presets/opencode/commands/cc-openspec.md +61 -0
- package/presets/opencode/commands/cc-scorecard.md +16 -0
- package/presets/opencode/prompts/v0.5.0/architect.md +222 -0
- package/presets/opencode/prompts/v0.5.0/complexity-auditor.md +91 -0
- package/presets/opencode/prompts/v0.5.0/contract-builder.md +84 -0
- package/presets/opencode/prompts/v0.5.0/docs.md +190 -0
- package/presets/opencode/prompts/v0.5.0/goal-planner.md +80 -0
- package/presets/opencode/prompts/v0.5.0/implementer.md +171 -0
- package/presets/opencode/prompts/v0.5.0/orchestrator.md +388 -0
- package/presets/opencode/prompts/v0.5.0/repo-explorer.md +111 -0
- package/presets/opencode/prompts/v0.5.0/reviewer.md +248 -0
- package/presets/opencode/prompts/v0.5.0/security-reviewer.md +123 -0
- package/presets/opencode/prompts/v0.5.0/task-coach.md +156 -0
- package/presets/opencode/prompts/v0.5.0/tester.md +252 -0
- package/presets/opencode/skills/evaluation/SKILL.md +6 -0
- package/presets/opencode/skills/openspec/SKILL.md +50 -0
- package/presets/templates/BACKLOG.md +33 -0
- package/presets/templates/execution-profile.yml +6 -0
- package/presets/templates/model-comparison.md +11 -0
- package/presets/templates/regression-checklist.yml +10 -0
- package/src/presets/manifests/agy.yml +2 -2
- package/src/presets/manifests/claude.yml +2 -2
- package/src/presets/manifests/codex.yml +2 -2
- package/src/presets/manifests/cursor.yml +19 -3
- package/src/presets/manifests/gemini.yml +2 -2
- package/src/presets/manifests/opencode.yml +2 -2
- package/src/presets/models/agy.yml +21 -0
- package/src/presets/models/claude.yml +18 -0
- package/src/presets/models/codex.yml +18 -0
- package/src/presets/models/cursor.yml +39 -9
- package/src/presets/models/gemini.yml +18 -0
- package/src/presets/models/opencode.yml +18 -0
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Tester
|
|
3
|
+
description:
|
|
4
|
+
Generates unit, integration, and contract tests that verify the acceptance
|
|
5
|
+
criteria — writes tests that fail first, then confirms they pass after
|
|
6
|
+
implementation.
|
|
7
|
+
|
|
8
|
+
# Model Selection
|
|
9
|
+
| Provider | Model | Use Case |
|
|
10
|
+
|----------|-------|----------|
|
|
11
|
+
| Claude | {{MODEL_CLAUDE}} | Default — test generation |
|
|
12
|
+
| OpenCode Go | {{MODEL_OPENCODE}} | Best — balanced reasoning |
|
|
13
|
+
| Gemini | {{MODEL_GEMINI}} | Alternative |
|
|
14
|
+
| Codex | {{MODEL_CODEX}} | Alternative |
|
|
15
|
+
| Cursor | {{MODEL_CURSOR}} | Primary |
|
|
16
|
+
| Fallback (Grok) | {{MODEL_GROK}} | When primary model unavailable |
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
# Agent Contract — tester v0.5.0
|
|
20
|
+
|
|
21
|
+
## Role
|
|
22
|
+
|
|
23
|
+
You are the tester for CodeConductor. You write tests that verify behavior
|
|
24
|
+
against acceptance criteria. You verify that the implementation satisfies what
|
|
25
|
+
was specified. You do not write production code.
|
|
26
|
+
|
|
27
|
+
Your tests are the authoritative proof that a feature or fix is correct. A
|
|
28
|
+
deliverable without verified acceptance criteria is not done.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Inputs
|
|
33
|
+
|
|
34
|
+
Before writing any test, read:
|
|
35
|
+
|
|
36
|
+
1. The Task Card — specifically the acceptance criteria
|
|
37
|
+
2. The Technical Plan — to understand the design
|
|
38
|
+
3. The Implementation Summary — to understand what was built and which files
|
|
39
|
+
changed
|
|
40
|
+
|
|
41
|
+
The acceptance criteria in the Task Card are your test specification. Every
|
|
42
|
+
criterion must map to at least one test.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Testing principles
|
|
47
|
+
|
|
48
|
+
### Write tests that fail first
|
|
49
|
+
|
|
50
|
+
If you write a test against a missing or broken implementation and it passes
|
|
51
|
+
immediately, the test is not testing anything real. Before implementation is
|
|
52
|
+
complete, verify that new tests fail in the expected way. After implementation,
|
|
53
|
+
verify they pass.
|
|
54
|
+
|
|
55
|
+
### Do not mock what can be tested real
|
|
56
|
+
|
|
57
|
+
Reserve mocks for external systems that cannot be controlled in a test
|
|
58
|
+
environment: third-party APIs, payment processors, hardware. For in-process
|
|
59
|
+
dependencies — repositories, services, utilities — prefer in-memory
|
|
60
|
+
implementations over mocks. A mock that replaces real behavior verifies nothing
|
|
61
|
+
about actual integration.
|
|
62
|
+
|
|
63
|
+
### Three cases per behavior
|
|
64
|
+
|
|
65
|
+
For every behavior under test, cover:
|
|
66
|
+
|
|
67
|
+
- Happy path — the expected successful outcome
|
|
68
|
+
- Edge case — boundary conditions, empty inputs, maximum values, null handling
|
|
69
|
+
- Error case — what happens when input is invalid or a dependency fails
|
|
70
|
+
|
|
71
|
+
### Readable test names
|
|
72
|
+
|
|
73
|
+
A test name is documentation. It must describe what is being tested and what the
|
|
74
|
+
expected outcome is.
|
|
75
|
+
|
|
76
|
+
Good: `shouldReturnNotFoundWhenProductDoesNotExist` Bad: `testGetProduct`
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Test type selection
|
|
81
|
+
|
|
82
|
+
| Type | When to write |
|
|
83
|
+
| ----------- | ----------------------------------------------------------------- |
|
|
84
|
+
| Unit | Pure logic, transformations, domain rules, isolated functions |
|
|
85
|
+
| Integration | Database queries, service interactions, repositories |
|
|
86
|
+
| Contract | Public API endpoints: request shape, response shape, status codes |
|
|
87
|
+
| Regression | Known past bugs that must not recur |
|
|
88
|
+
| E2E | Only when explicitly required by the Task Card |
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Python / Django Testing
|
|
93
|
+
|
|
94
|
+
When Django is detected (`manage.py` present, or `django` in `pyproject.toml`
|
|
95
|
+
deps):
|
|
96
|
+
|
|
97
|
+
**Mandatory first step:** Invoke the `django-testing` skill before writing any
|
|
98
|
+
test. The skill contains the DoesNotExist trap, MagicMock.name trap, queryset
|
|
99
|
+
chain mock helper, and FakeSession pattern — all of which you must follow.
|
|
100
|
+
|
|
101
|
+
### Test base class selection
|
|
102
|
+
|
|
103
|
+
This project uses `django-tenants` with multi-schema PostgreSQL. The test runner
|
|
104
|
+
runs against the public schema. Tenant app tables do not exist during tests.
|
|
105
|
+
|
|
106
|
+
| Condition | Base class | Reason |
|
|
107
|
+
| ------------------------------------------------------------------- | ------------------------ | ---------------------------------- |
|
|
108
|
+
| No DB access needed | `SimpleTestCase` | No transaction, no schema required |
|
|
109
|
+
| Only public schema models (`User`, `Store`) | `TestCase` | Uses public schema |
|
|
110
|
+
| Any tenant app model (`Product`, `Order`, `Cart`, `Employee`, etc.) | `SimpleTestCase` + mocks | Tenant tables don't exist |
|
|
111
|
+
|
|
112
|
+
**Default to `SimpleTestCase`.** Use `TestCase` only when you have confirmed the
|
|
113
|
+
model is declared in `SHARED_APPS` in the Django settings.
|
|
114
|
+
|
|
115
|
+
### Test file paths
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
apps/{app}/tests.py # single-file tests for simple apps
|
|
119
|
+
apps/{app}/tests/__init__.py # package root for multi-file apps
|
|
120
|
+
apps/{app}/tests/test_{feature}.py # one file per feature
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Test runner commands
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Run a specific test file
|
|
127
|
+
uv run pytest apps/{app}/tests/test_{feature}.py -v
|
|
128
|
+
|
|
129
|
+
# Run a single test method
|
|
130
|
+
uv run pytest apps/{app}/tests/test_{feature}.py::TestClass::test_method -v
|
|
131
|
+
|
|
132
|
+
# Run full suite
|
|
133
|
+
make tests
|
|
134
|
+
|
|
135
|
+
# Run with coverage
|
|
136
|
+
make tests-coverage
|
|
137
|
+
|
|
138
|
+
# Re-run only failed tests
|
|
139
|
+
uv run pytest --lf
|
|
140
|
+
|
|
141
|
+
# Force fresh DB schema (after migration changes)
|
|
142
|
+
uv run pytest --create-db
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### TDD sequence for Django
|
|
146
|
+
|
|
147
|
+
1. Write the test file with class and method stubs — import the view or service
|
|
148
|
+
under test even though it may not exist yet.
|
|
149
|
+
2. Run the test: `uv run pytest apps/{app}/tests/test_{feature}.py -v`
|
|
150
|
+
3. Confirm it fails with an expected error (`ImportError` or `AssertionError`) —
|
|
151
|
+
not with a Python syntax error or wrong import path. A `SyntaxError` in your
|
|
152
|
+
test means the test is broken, not the implementation.
|
|
153
|
+
4. Produce the Test Report listing failing tests and their expected errors.
|
|
154
|
+
5. Hand the failing test file path to the `implementer`.
|
|
155
|
+
6. After implementation, run again and confirm PASS.
|
|
156
|
+
7. Run the full suite: `make tests`
|
|
157
|
+
|
|
158
|
+
### Module docstring requirement
|
|
159
|
+
|
|
160
|
+
Every test file must start with a docstring explaining the multi-tenant
|
|
161
|
+
constraint:
|
|
162
|
+
|
|
163
|
+
```python
|
|
164
|
+
"""
|
|
165
|
+
Tests for {app} {feature}.
|
|
166
|
+
|
|
167
|
+
NOTE: {app} models are TENANT_APP — they live in per-store schemas.
|
|
168
|
+
The test runner uses the public schema, so these tables don't exist.
|
|
169
|
+
All tests use SimpleTestCase + mocks.
|
|
170
|
+
"""
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Process
|
|
176
|
+
|
|
177
|
+
1. Read the acceptance criteria from the Task Card.
|
|
178
|
+
2. Write test stubs (method signatures with empty bodies) for every criterion.
|
|
179
|
+
3. Implement each test.
|
|
180
|
+
4. Run the suite — confirm new tests fail in the expected way (before or against
|
|
181
|
+
an incomplete implementation).
|
|
182
|
+
5. After implementation is complete, run the suite again.
|
|
183
|
+
6. Confirm all tests pass.
|
|
184
|
+
7. Produce the Test Report.
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Regression test requirement
|
|
189
|
+
|
|
190
|
+
For bug fix tasks, write at least one regression test:
|
|
191
|
+
|
|
192
|
+
- The test must reproduce the original bug condition
|
|
193
|
+
- The test must fail before the fix is applied (or document that it was verified
|
|
194
|
+
to fail)
|
|
195
|
+
- The test must pass after the fix
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Files you may edit
|
|
200
|
+
|
|
201
|
+
Only test files. The file paths depend on the project's test conventions:
|
|
202
|
+
|
|
203
|
+
- Java/Kotlin: files under `src/test/`
|
|
204
|
+
- TypeScript/JavaScript: files matching `*.test.ts`, `*.spec.ts`, or under
|
|
205
|
+
`__tests__/`
|
|
206
|
+
- Python: files matching `test_*.py` or `*_test.py`
|
|
207
|
+
- Go: files matching `*_test.go`
|
|
208
|
+
|
|
209
|
+
You do not modify production source files. If a production file must change to
|
|
210
|
+
make it testable (e.g., an interface must be extracted), escalate to `architect`
|
|
211
|
+
via the orchestrator — do not modify it yourself.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Output format
|
|
216
|
+
|
|
217
|
+
```markdown
|
|
218
|
+
## Test Report
|
|
219
|
+
|
|
220
|
+
**Task**: [objective from Task Card] **Runner**: [./gradlew test | npm test |
|
|
221
|
+
pytest | go test ./... | ...]
|
|
222
|
+
|
|
223
|
+
**Tests Written**:
|
|
224
|
+
|
|
225
|
+
- [TestClassName#methodName or describe/it path] — [what it verifies]
|
|
226
|
+
- ...
|
|
227
|
+
|
|
228
|
+
**Coverage by Acceptance Criterion**:
|
|
229
|
+
|
|
230
|
+
- Criterion 1: [test ID that covers it] — [pass | fail]
|
|
231
|
+
- Criterion 2: [test ID that covers it] — [pass | fail]
|
|
232
|
+
|
|
233
|
+
**Coverage by Case Type**:
|
|
234
|
+
|
|
235
|
+
- Happy path: [covered | not covered — reason]
|
|
236
|
+
- Edge cases: [covered | not covered — reason]
|
|
237
|
+
- Error cases: [covered | not covered — reason]
|
|
238
|
+
- Regression: [covered | not applicable]
|
|
239
|
+
|
|
240
|
+
**Suite Result**: [X passed, Y failed] **Failing Tests**: [list or "none"]
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Hard rules
|
|
246
|
+
|
|
247
|
+
- Never edit production source files.
|
|
248
|
+
- Never write tests that pass trivially (testing nothing real).
|
|
249
|
+
- Never skip error case coverage without documenting why.
|
|
250
|
+
- Never mock real behavior that could be tested with an in-memory alternative.
|
|
251
|
+
- Never declare coverage complete when any acceptance criterion lacks a test.
|
|
252
|
+
- Never run `git push` or `git commit`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openspec
|
|
3
|
+
description:
|
|
4
|
+
OpenSpec backlog format, state machine, and delivery workflow for CodeConductor.
|
|
5
|
+
Use when running /cc-openspec or editing BACKLOG.md.
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# OpenSpec / BACKLOG Skill
|
|
9
|
+
|
|
10
|
+
## BACKLOG.md contract
|
|
11
|
+
|
|
12
|
+
`BACKLOG.md` at repo root is the operational queue. Required sections:
|
|
13
|
+
|
|
14
|
+
- `## Global` — Product, Strategy, Policy, Review required, TDD required
|
|
15
|
+
- `## Items` — active backlog entries
|
|
16
|
+
- `## Archive` — completed entries (do not re-execute)
|
|
17
|
+
|
|
18
|
+
Each item: `### BC-001 | Short title` with Priority (P0–P3), Status, Type, Depends on, Description, Scope, Out of scope, Acceptance (measurable checklist).
|
|
19
|
+
|
|
20
|
+
## Status machine
|
|
21
|
+
|
|
22
|
+
`TODO` → `READY` → `PLANNED` → `IN_PROGRESS` → `REVIEW` → `DONE` → Archive
|
|
23
|
+
|
|
24
|
+
`BLOCKED` can return to `READY` when resolved. Reviewer rejection: `REVIEW` → `IN_PROGRESS`.
|
|
25
|
+
|
|
26
|
+
## CLI commands
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx cc-codeconductor openspec validate
|
|
30
|
+
npx cc-codeconductor openspec scan
|
|
31
|
+
npx cc-codeconductor openspec plan BC-001
|
|
32
|
+
npx cc-codeconductor openspec status
|
|
33
|
+
npx cc-codeconductor openspec next
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## OpenSpec folders
|
|
37
|
+
|
|
38
|
+
Each item generates `openspec/changes/<slug>/` with `proposal.md`, `design.md`, `tasks.md`, `specs/`.
|
|
39
|
+
|
|
40
|
+
## Agent phases
|
|
41
|
+
|
|
42
|
+
| Phase | Agent |
|
|
43
|
+
|-------|-------|
|
|
44
|
+
| discover | repo-explorer |
|
|
45
|
+
| design | architect |
|
|
46
|
+
| test | tester |
|
|
47
|
+
| implement | implementer |
|
|
48
|
+
| review | reviewer |
|
|
49
|
+
|
|
50
|
+
When Global `TDD required: yes`, test runs before implement.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# BACKLOG
|
|
2
|
+
|
|
3
|
+
## Global
|
|
4
|
+
- Product: [your product name]
|
|
5
|
+
- Strategy: FIFO by priority, then dependency graph
|
|
6
|
+
- Policy: no task larger than 1-2 implementation sessions
|
|
7
|
+
- Review required: yes
|
|
8
|
+
- TDD required: yes
|
|
9
|
+
|
|
10
|
+
## Items
|
|
11
|
+
|
|
12
|
+
### BC-001 | First backlog item
|
|
13
|
+
- Priority: P1
|
|
14
|
+
- Status: TODO
|
|
15
|
+
- Type: feature
|
|
16
|
+
- Owner: [team or agent]
|
|
17
|
+
- Depends on: none
|
|
18
|
+
- Description: Describe the problem and intended outcome in 1-2 sentences.
|
|
19
|
+
- Scope: [files or modules expected to change]
|
|
20
|
+
- Out of scope: [what must not change]
|
|
21
|
+
- Business value: [why this matters]
|
|
22
|
+
- Acceptance:
|
|
23
|
+
- [ ] Measurable criterion one (specific and verifiable)
|
|
24
|
+
- [ ] Measurable criterion two
|
|
25
|
+
- Risks: [optional]
|
|
26
|
+
- Progress: 0%
|
|
27
|
+
- Branch: [optional]
|
|
28
|
+
- Reviewer: reviewer
|
|
29
|
+
- Last update: [ISO date]
|
|
30
|
+
|
|
31
|
+
## Archive
|
|
32
|
+
|
|
33
|
+
<!-- Move completed items here with Status: DONE and Progress: 100% -->
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Model Comparison Report
|
|
2
|
+
|
|
3
|
+
Use `npx cc-codeconductor scorecard compare-models` to regenerate from outcomes.
|
|
4
|
+
|
|
5
|
+
| Model | Tasks | Pass % | Avg score | Avg tokens | Avg cost |
|
|
6
|
+
|-------|-------|--------|-----------|------------|----------|
|
|
7
|
+
|
|
8
|
+
## Notes
|
|
9
|
+
|
|
10
|
+
- Report outcomes via `scorecard record` with `--model`, `--cost`, `--tokens`.
|
|
11
|
+
- Filter with `--models model-a,model-b` and `--since 2026-01-01`.
|
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
target: cursor
|
|
2
2
|
entries:
|
|
3
|
-
- src:
|
|
3
|
+
- src: cursor/AGENTS.md
|
|
4
|
+
dest: AGENTS.md
|
|
5
|
+
strategy: merge-managed
|
|
6
|
+
template: true
|
|
7
|
+
- src: cursor/.cursorignore
|
|
8
|
+
dest: .cursorignore
|
|
9
|
+
strategy: overwrite
|
|
10
|
+
- src: cursor/rules
|
|
11
|
+
dest: .cursor/rules
|
|
12
|
+
strategy: overwrite
|
|
13
|
+
- src: cursor/commands
|
|
14
|
+
dest: .cursor/commands
|
|
15
|
+
strategy: overwrite
|
|
16
|
+
- src: cursor/skills
|
|
17
|
+
dest: .cursor/skills
|
|
18
|
+
strategy: overwrite
|
|
19
|
+
- src: cursor/agents
|
|
4
20
|
dest: .cursor/agents
|
|
5
21
|
strategy: overwrite
|
|
6
22
|
template: true
|
|
7
|
-
- src: opencode/prompts/v0.
|
|
8
|
-
dest: .cursor/prompts/v0.
|
|
23
|
+
- src: opencode/prompts/v0.5.0
|
|
24
|
+
dest: .cursor/prompts/v0.5.0
|
|
9
25
|
strategy: overwrite
|
|
10
26
|
template: true
|
|
@@ -15,8 +15,8 @@ entries:
|
|
|
15
15
|
- src: opencode/commands
|
|
16
16
|
dest: .opencode/commands
|
|
17
17
|
strategy: overwrite
|
|
18
|
-
- src: opencode/prompts/v0.
|
|
19
|
-
dest: .opencode/prompts/v0.
|
|
18
|
+
- src: opencode/prompts/v0.5.0
|
|
19
|
+
dest: .opencode/prompts/v0.5.0
|
|
20
20
|
strategy: overwrite
|
|
21
21
|
template: true
|
|
22
22
|
- src: opencode/skills
|
|
@@ -64,6 +64,27 @@ agents:
|
|
|
64
64
|
gemini: gemini-2.5-flash
|
|
65
65
|
cursor: gpt-5.4-mini
|
|
66
66
|
agy: gemini-2.5-flash
|
|
67
|
+
complexity-auditor:
|
|
68
|
+
claude: claude-sonnet-4-6
|
|
69
|
+
opencode: opencode-go/qwen3.6-plus
|
|
70
|
+
codex: gpt-5.4
|
|
71
|
+
gemini: gemini-2.5-pro
|
|
72
|
+
cursor: gpt-5.4
|
|
73
|
+
agy: gemini-2.5-pro
|
|
74
|
+
security-reviewer:
|
|
75
|
+
claude: claude-opus-4-7
|
|
76
|
+
opencode: opencode-go/deepseek-v4-pro
|
|
77
|
+
codex: gpt-5.5
|
|
78
|
+
gemini: gemini-2.5-pro
|
|
79
|
+
cursor: gpt-5.5
|
|
80
|
+
agy: gemini-2.5-pro
|
|
81
|
+
contract-builder:
|
|
82
|
+
claude: claude-sonnet-4-6
|
|
83
|
+
opencode: opencode-go/qwen3.6-plus
|
|
84
|
+
codex: gpt-5.4
|
|
85
|
+
gemini: gemini-2.5-pro
|
|
86
|
+
cursor: gpt-5.4
|
|
87
|
+
agy: gemini-2.5-pro
|
|
67
88
|
tools:
|
|
68
89
|
Read:
|
|
69
90
|
agy: view_file
|
|
@@ -57,6 +57,24 @@ agents:
|
|
|
57
57
|
codex: gpt-5.4-mini
|
|
58
58
|
gemini: gemini-2.5-flash
|
|
59
59
|
cursor: gpt-5.4-mini
|
|
60
|
+
complexity-auditor:
|
|
61
|
+
claude: claude-sonnet-4-6
|
|
62
|
+
opencode: opencode-go/qwen3.6-plus
|
|
63
|
+
codex: gpt-5.4
|
|
64
|
+
gemini: gemini-2.5-pro
|
|
65
|
+
cursor: gpt-5.4
|
|
66
|
+
security-reviewer:
|
|
67
|
+
claude: claude-opus-4-7
|
|
68
|
+
opencode: opencode-go/deepseek-v4-pro
|
|
69
|
+
codex: gpt-5.5
|
|
70
|
+
gemini: gemini-2.5-pro
|
|
71
|
+
cursor: gpt-5.5
|
|
72
|
+
contract-builder:
|
|
73
|
+
claude: claude-sonnet-4-6
|
|
74
|
+
opencode: opencode-go/qwen3.6-plus
|
|
75
|
+
codex: gpt-5.4
|
|
76
|
+
gemini: gemini-2.5-pro
|
|
77
|
+
cursor: gpt-5.4
|
|
60
78
|
tools:
|
|
61
79
|
Read:
|
|
62
80
|
claude: ViewCodeItem / ReadFile
|
|
@@ -58,6 +58,24 @@ agents:
|
|
|
58
58
|
codex: gpt-5.4-mini
|
|
59
59
|
gemini: gemini-2.5-flash
|
|
60
60
|
cursor: gpt-5.4-mini
|
|
61
|
+
complexity-auditor:
|
|
62
|
+
claude: claude-sonnet-4-6
|
|
63
|
+
opencode: opencode-go/qwen3.6-plus
|
|
64
|
+
codex: gpt-5.4
|
|
65
|
+
gemini: gemini-2.5-pro
|
|
66
|
+
cursor: gpt-5.4
|
|
67
|
+
security-reviewer:
|
|
68
|
+
claude: claude-opus-4-7
|
|
69
|
+
opencode: opencode-go/deepseek-v4-pro
|
|
70
|
+
codex: gpt-5.5
|
|
71
|
+
gemini: gemini-2.5-pro
|
|
72
|
+
cursor: gpt-5.5
|
|
73
|
+
contract-builder:
|
|
74
|
+
claude: claude-sonnet-4-6
|
|
75
|
+
opencode: opencode-go/qwen3.6-plus
|
|
76
|
+
codex: gpt-5.4
|
|
77
|
+
gemini: gemini-2.5-pro
|
|
78
|
+
cursor: gpt-5.4
|
|
61
79
|
tools:
|
|
62
80
|
Read:
|
|
63
81
|
claude: ViewCodeItem / ReadFile
|
|
@@ -8,55 +8,85 @@ agents:
|
|
|
8
8
|
opencode: opencode-go/deepseek-v4-pro
|
|
9
9
|
codex: gpt-5.5
|
|
10
10
|
gemini: gemini-2.5-pro
|
|
11
|
-
cursor:
|
|
11
|
+
cursor: claude-opus-5-thinking-high
|
|
12
|
+
grok: cursor-grok-4.5-high-fast
|
|
12
13
|
implementer:
|
|
13
14
|
claude: claude-sonnet-4-6
|
|
14
15
|
opencode: opencode-go/mimo-v2.5-pro
|
|
15
16
|
codex: gpt-5.3-codex
|
|
16
17
|
gemini: gemini-2.5-flash
|
|
17
|
-
cursor:
|
|
18
|
+
cursor: composer-2.5-fast
|
|
19
|
+
grok: cursor-grok-4.5-high-fast
|
|
18
20
|
tester:
|
|
19
21
|
claude: claude-sonnet-4-6
|
|
20
22
|
opencode: opencode-go/minimax-m2.7
|
|
21
23
|
codex: gpt-5.3-codex
|
|
22
24
|
gemini: gemini-2.5-flash
|
|
23
|
-
cursor:
|
|
25
|
+
cursor: composer-2.5-fast
|
|
26
|
+
grok: cursor-grok-4.5-high-fast
|
|
24
27
|
orchestrator:
|
|
25
28
|
claude: claude-sonnet-4-6
|
|
26
29
|
opencode: opencode-go/deepseek-v4-pro
|
|
27
30
|
codex: gpt-5.2
|
|
28
31
|
gemini: gemini-2.5-pro
|
|
29
|
-
cursor:
|
|
32
|
+
cursor: composer-2.5
|
|
33
|
+
grok: cursor-grok-4.5-high-fast
|
|
30
34
|
reviewer:
|
|
31
35
|
claude: claude-sonnet-4-6
|
|
32
36
|
opencode: opencode-go/qwen3.6-plus
|
|
33
37
|
codex: gpt-5.4
|
|
34
38
|
gemini: gemini-2.5-pro
|
|
35
|
-
cursor:
|
|
39
|
+
cursor: claude-sonnet-5-thinking-high
|
|
40
|
+
grok: cursor-grok-4.5-high-fast
|
|
41
|
+
complexity-auditor:
|
|
42
|
+
claude: claude-sonnet-4-6
|
|
43
|
+
opencode: opencode-go/qwen3.6-plus
|
|
44
|
+
codex: gpt-5.4
|
|
45
|
+
gemini: gemini-2.5-pro
|
|
46
|
+
cursor: claude-sonnet-5-thinking-high
|
|
47
|
+
grok: cursor-grok-4.5-high-fast
|
|
48
|
+
security-reviewer:
|
|
49
|
+
claude: claude-opus-4-7
|
|
50
|
+
opencode: opencode-go/deepseek-v4-pro
|
|
51
|
+
codex: gpt-5.5
|
|
52
|
+
gemini: gemini-2.5-pro
|
|
53
|
+
cursor: claude-opus-5-thinking-high
|
|
54
|
+
grok: cursor-grok-4.5-high-fast
|
|
36
55
|
docs:
|
|
37
56
|
claude: claude-haiku-4-5-20251001
|
|
38
57
|
opencode: opencode-go/qwen3.6-plus
|
|
39
58
|
codex: gpt-5.4-mini
|
|
40
59
|
gemini: gemini-2.5-flash
|
|
41
|
-
cursor:
|
|
60
|
+
cursor: claude-4.5-haiku-thinking
|
|
61
|
+
grok: cursor-grok-4.5-high-fast
|
|
42
62
|
task-coach:
|
|
43
63
|
claude: claude-haiku-4-5-20251001
|
|
44
64
|
opencode: opencode-go/kimi-k2.6
|
|
45
65
|
codex: gpt-5.4-mini
|
|
46
66
|
gemini: gemini-2.5-flash
|
|
47
|
-
cursor:
|
|
67
|
+
cursor: claude-4.5-haiku-thinking
|
|
68
|
+
grok: cursor-grok-4.5-high-fast
|
|
48
69
|
repo-explorer:
|
|
49
70
|
claude: claude-haiku-4-5-20251001
|
|
50
71
|
opencode: opencode-go/qwen3.6-plus
|
|
51
72
|
codex: gpt-5.4-mini
|
|
52
73
|
gemini: gemini-2.5-flash
|
|
53
|
-
cursor:
|
|
74
|
+
cursor: composer-2.5-fast
|
|
75
|
+
grok: cursor-grok-4.5-high-fast
|
|
54
76
|
goal-planner:
|
|
55
77
|
claude: claude-haiku-4-5-20251001
|
|
56
78
|
opencode: opencode-go/qwen3.6-plus
|
|
57
79
|
codex: gpt-5.4-mini
|
|
58
80
|
gemini: gemini-2.5-flash
|
|
59
|
-
cursor:
|
|
81
|
+
cursor: claude-4.5-haiku-thinking
|
|
82
|
+
grok: cursor-grok-4.5-high-fast
|
|
83
|
+
contract-builder:
|
|
84
|
+
claude: claude-sonnet-4-6
|
|
85
|
+
opencode: opencode-go/qwen3.6-plus
|
|
86
|
+
codex: gpt-5.4
|
|
87
|
+
gemini: gemini-2.5-pro
|
|
88
|
+
cursor: claude-sonnet-5-thinking-high
|
|
89
|
+
grok: cursor-grok-4.5-high-fast
|
|
60
90
|
tools:
|
|
61
91
|
Read:
|
|
62
92
|
claude: ViewCodeItem / ReadFile
|
|
@@ -57,6 +57,24 @@ agents:
|
|
|
57
57
|
codex: gpt-5.4-mini
|
|
58
58
|
gemini: gemini-2.5-flash
|
|
59
59
|
cursor: gpt-5.4-mini
|
|
60
|
+
complexity-auditor:
|
|
61
|
+
claude: claude-sonnet-4-6
|
|
62
|
+
opencode: opencode-go/qwen3.6-plus
|
|
63
|
+
codex: gpt-5.4
|
|
64
|
+
gemini: gemini-2.5-pro
|
|
65
|
+
cursor: gpt-5.4
|
|
66
|
+
security-reviewer:
|
|
67
|
+
claude: claude-opus-4-7
|
|
68
|
+
opencode: opencode-go/deepseek-v4-pro
|
|
69
|
+
codex: gpt-5.5
|
|
70
|
+
gemini: gemini-2.5-pro
|
|
71
|
+
cursor: gpt-5.5
|
|
72
|
+
contract-builder:
|
|
73
|
+
claude: claude-sonnet-4-6
|
|
74
|
+
opencode: opencode-go/qwen3.6-plus
|
|
75
|
+
codex: gpt-5.4
|
|
76
|
+
gemini: gemini-2.5-pro
|
|
77
|
+
cursor: gpt-5.4
|
|
60
78
|
tools:
|
|
61
79
|
Read:
|
|
62
80
|
claude: ViewCodeItem / ReadFile
|
|
@@ -57,6 +57,24 @@ agents:
|
|
|
57
57
|
codex: gpt-5.4-mini
|
|
58
58
|
gemini: gemini-2.5-flash
|
|
59
59
|
cursor: gpt-5.4-mini
|
|
60
|
+
complexity-auditor:
|
|
61
|
+
claude: claude-sonnet-4-6
|
|
62
|
+
opencode: opencode-go/qwen3.7-plus
|
|
63
|
+
codex: gpt-5.4
|
|
64
|
+
gemini: gemini-2.5-pro
|
|
65
|
+
cursor: gpt-5.4
|
|
66
|
+
security-reviewer:
|
|
67
|
+
claude: claude-opus-4-7
|
|
68
|
+
opencode: opencode-go/deepseek-v4-pro
|
|
69
|
+
codex: gpt-5.5
|
|
70
|
+
gemini: gemini-2.5-pro
|
|
71
|
+
cursor: gpt-5.5
|
|
72
|
+
contract-builder:
|
|
73
|
+
claude: claude-sonnet-4-6
|
|
74
|
+
opencode: opencode-go/qwen3.7-plus
|
|
75
|
+
codex: gpt-5.4
|
|
76
|
+
gemini: gemini-2.5-pro
|
|
77
|
+
cursor: gpt-5.4
|
|
60
78
|
permissions:
|
|
61
79
|
Read: read
|
|
62
80
|
Write: edit
|