Project Implement

Run a TDD development session on an existing Colloquium project — implement tests one by one until all 200 pass.

SertacCebeci 1 updated 4mo ago
Claude CodeGeneric
View source ↗
# Colloquium Project — Implement

Run a TDD development session on an existing Colloquium project — implement tests one by one until all 200 pass.

Invoke as:
`/colloquium:project-implement` → lists available projects to continue
`/colloquium:project-implement <slug>` → continue the named project directly

**Version:** v1 — Develop-only skill (split from colloquium:project v3)

> **To bootstrap a new project from scratch,** use `/colloquium:project-initiate` instead.

---

## ENFORCEMENT RULES (read before executing any step)

1. **State after every step.** Write `project-state.json` after EVERY step — not after phases, not in batches.
2. **Banners are mandatory.** Every phase and step displays its start and completion banner.
3. **Hard gates block.** Browser verification is a HARD GATE — `"passes": true` is NEVER written before the browser test passes.
4. **`feature_list.json` is append-only.** Only the `"passes"` field may change. Descriptions, steps, and order are permanently frozen.
5. **AI never touches git beyond this skill's commits.** No branch creation, no push, no PR. Only the per-test implementation commits described below.
6. **Never skip the inner cycle.** All steps (3a through 3f) are mandatory per test. No step may be skipped even if it feels redundant.

---

## Entrypoint: Project Selection

If invoked without a slug, run:

```bash
ls .claude/projects/ 2>/dev/null

Collect all subdirectories containing project-state.json. For each, read passingTests, totalTests, and lastUpdated.

Display:

════════════════════════════════════════════════════════════════
▶ COLLOQUIUM PROJECT — IMPLEMENT
════════════════════════════════════════════════════════════════
Known projects:
  1. claude-ai-clone     — 34/200 tests passing  (last: 2026-02-20)
  2. my-dashboard        — 12/200 tests passing  (last: 2026-02-19)

Choose a project number to continue:
════════════════════════════════════════════════════════════════

If no projects exist, display an error:

════════════════════════════════════════════════════════════════
❌ No projects found
════════════════════════════════════════════════════════════════
No project-state.json found in .claude/projects/
Run /colloquium:project-initiate to bootstrap a new project first.
════════════════════════════════════════════════════════════════

If a <slug> was passed directly: skip the question and proceed immediately.


Session Start

Step 1 — Read state and migration check

Read .claude/projects/<slug>/project-state.json.

Note: If claude-progress.txt contains Run /colloquium:project (without -implement), treat it as Run /colloquium:project-implement <slug>. This is the pre-split command — functionally identical, just renamed.

If frontendPackage, apiPackage, or frontendPort are missing from project-state.json, run this one-time migration before continuing:

  1. Run: cat apps/<slug>/package.json → read the "name" field → this is frontendPackage; also read the "dev" script → extract --port NNNN → this is frontendPort (default 5173 if no explicit flag)
  2. If apps/<slug>-api/ exists: run cat apps/<slug>-api/package.json → read the "name" field → this is apiPackage. If no -api app exists: set apiPackage to null.
  3. Merge all derived values into the existing project-state.json — update only the missing keys, do NOT overwrite other existing keys (passingTests, currentTestIndex, sessionCount, etc.).

This migration runs once per existing project, never again once the fields exist.


Step 2 — Count passing tests and display session banner

grep -c '"passes": true' .claude/projects/<slug>/feature_list.json

Display:

════════════════════════════════════════════════════════════════
▶ DEVELOP SESSION — [name]
════════════════════════════════════════════════════════════════
Progress:     [passingTests] / [totalTests] tests passing
Next test:    #[currentTestIndex] — [description]
Session:      #[sessionCount + 1]
════════════════════════════════════════════════════════════════

Step 3 — Start dev servers

pnpm turbo dev --filter=<frontendPackage> [--filter=<apiPackage> if apiPackage is not null]

Wait for all started apps to report "ready" in log output before proceeding.


Step 4 — Regression gate

4a — Vitest suite:

pnpm turbo test --filter=<apiPackage>   # skip if apiPackage is null (frontend-only project)
  • All green → proceed to 4b
  • Any red → STOP. Fix the failing test, commit the fix (fix(<slug>): restore [description]), re-run. Repeat until all green, then proceed to 4b. If unable to fix within 3 attempts: display a banner identifying the failing tests and ask the human whether to continue with the known regression or abort the session.

4b — Browser smoke check:

Use Playwright MCP to navigate to http://localhost:<frontendPort>. Take one screenshot.

  • Page loads with any content visible → proceed to Per-Test Inner Cycle
  • Blank page or unhandled error boundary → treat as a regression, fix before new work

Per-Test Inner Cycle

Pick the test at currentTestIndex from feature_list.json (the first one with "passes": false).

Display task banner:

════════════════════════════════════════════════════════════════
▶ TEST [currentTestIndex + 1] of [totalTests]
════════════════════════════════════════════════════════════════
Description:  [test description]
Category:     [functional | style]
Steps:        [count] steps
════════════════════════════════════════════════════════════════

Step 3a — context7: pull library docs

Use mcp__plugin_context7_context7__resolve-library-id + mcp__plugin_context7_context7__query-docs for the specific library method this test will exercise.

Do not skip even if the library was fetched in a prior session.


Step 3b — TDD: Red → Loop → Green

Use Skill tool: superpowers:test-driven-development

En ```

Maintain Project Implement?

Let people know it's listed here — add the badge (live metrics, light/dark aware) or a plain link to your README or docs.

[Project Implement on getagentictools](https://getagentictools.com/loops/sertaccebeci-colloquium-project-implement?ref=badge)