Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,18 @@
"authentication": "ON_INSTALL"
},
"category": "Productivity"
},
{
"name": "effect-kit",
"source": {
"source": "local",
"path": "./plugins/effect-kit"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}
]
}
28 changes: 28 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,34 @@
"cross-tool",
"codex"
]
},
{
"name": "effect-kit",
"source": "./plugins/effect-kit",
"description": "Cross-tool Effect-TS skill kit: repo setup (effect-ts-setup), idiomatic Effect 3.x patterns (effect-ts-specialist), and Fastify/Next.js/React → Effect porting (effect-ts-port).",
"version": "0.1.1",
"author": {
"name": "Eduardo Marquez"
},
"license": "MIT",
"homepage": "https://github.com/DocksDocks/docks",
"repository": "https://github.com/DocksDocks/docks",
"keywords": [
"effect",
"effect-ts",
"typescript",
"skills",
"cross-tool",
"codex"
],
"category": "engineering-workflows",
"tags": [
"effect",
"typescript",
"cross-tool",
"skills",
"codex"
]
}
]
}
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ node scripts/ci.mjs # guards + scorers — must
│ ├── agents/ (Claude-only) plan-manager + plan-review thin opus plan-lifecycle wrappers
│ └── hooks/ (cross-tool) context-tree-nudge PostToolUse hook (Claude + Codex)
├── plugins/session-relay/ 2nd plugin (cross-tool: Claude + Codex): cross-session/cross-project/cross-tool agent message bus — MCP bus server + shared SessionStart hook + relay CLI; self-versioned, gated by its own ci.mjs section
├── plugins/effect-kit/ 3rd plugin (cross-tool): Effect-TS skill kit — effect-ts-setup / effect-ts-specialist / effect-ts-port (skills-only; depends on docks for plan-lifecycle + authoring skills); self-versioned
├── .claude-plugin/marketplace.json Claude marketplace catalog
├── .agents/plugins/marketplace.json Codex marketplace catalog
├── .agents/skills/ project-local skills (canonical, multi-tool)
Expand All @@ -42,6 +43,7 @@ Per-area conventions load lazily from nested `AGENTS.md` nodes. Each is paired w
| `docs/scaffold/AGENTS.md` | scaffold spec + templates — what the `scaffold` skill seeds into new projects |
| `plugins/docks/skills/AGENTS.md` | skill authoring — description CSO, frontmatter, body rules, scoring |
| `plugins/session-relay/AGENTS.md` | the relay plugin — layout, binary-release discipline, its CI gates |
| `plugins/effect-kit/skills/AGENTS.md` | effect-kit skill authoring — Effect 3.x version-pinned conventions |
| `scripts/AGENTS.md` | validators, edit→release workflow, double-layer gating, versioning |
| `.github/AGENTS.md` | CI trigger model, keep-in-sync with `ci.mjs` |

Expand Down
20 changes: 13 additions & 7 deletions docs/plans/active/effect-kit-migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ title: Migrate effect-kit into the docks multi-plugin repo
goal: Move the effect-kit plugin payload from ~/projects/effect-kit into plugins/effect-kit/ here, wire it into the registry-driven CI/release/marketplace machinery, and retire the standalone repo.
status: ongoing
created: "2026-07-03T17:07:03-03:00"
updated: "2026-07-03T17:35:57-03:00"
updated: "2026-07-03T17:47:02-03:00"
started_at: "2026-07-03T17:35:57-03:00"
assignee: claude
tags: [effect-kit, multi-plugin, marketplace, migration]
Expand Down Expand Up @@ -46,12 +46,12 @@ Do the migration on a feature branch (`plan/effect-kit-migration`) and open a PR

| # | Task | Files | Depends | Status |
|---|---|---|---|---|
| 1 | Copy the payload: `cp -r ~/projects/effect-kit/plugins/effect-kit plugins/` (plain copy — DECIDED OQ1; history stays in the archived repo; payload = both plugin manifests + `skills/` incl. the node pair). Verify file count matches source (`find ... \| wc -l` both sides) | `plugins/effect-kit/` (new) | — | planned |
| 2 | Registry descriptor in `scripts/lib/plugins.mjs`: `{ name: 'effect-kit', root: 'plugins/effect-kit', skills: 'plugins/effect-kit/skills', agents: null, codex: true, selftest: null, rust: null, extraJson: [], transformGuard: false, install: '/plugin marketplace update docks\n/plugin install effect-kit@docks' }` | `scripts/lib/plugins.mjs` | 1 | planned |
| 3 | Marketplace entries: `.claude-plugin/marketplace.json` gains the effect-kit plugin entry (source `./plugins/effect-kit`, version matching both plugin.jsons — lockstep gate); `.agents/plugins/marketplace.json` gains the Codex entry (local source path + policy block, mirroring the session-relay entry shape via the `codex-plugin-mirror` project skill) | both catalogs | 2 | planned |
| 4 | Rewrite `plugins/effect-kit/skills/AGENTS.md`: (a) replace `bash scripts/skills/guard.sh plugins/effect-kit/skills` → `node scripts/ci.mjs --plugin effect-kit`; (b) append one line — `Full authoring contract (frontmatter, CSO, scoring, content-hash idempotency, durable-anchors grammar): see plugins/docks/skills/AGENTS.md`; (c) add NO `path:NN` live anchor (durable-anchors is repo-wide). Root `AGENTS.md`: add a `plugins/effect-kit/` block to the Repository-scope tree, and the row `\| plugins/effect-kit/skills/AGENTS.md \| effect-kit skill authoring — Effect 3.x version-pinned conventions \|` to the Context-tree table | `plugins/effect-kit/skills/AGENTS.md`, `AGENTS.md` | 1 | planned |
| 5 | Modularity checklist (maintainer requirement): `scripts/AGENTS.md` multi-plugin section gains the concrete "adding plugin N+1" checklist — descriptor fields → two catalog entries → optional context node → `--plugin` release; each item naming its gate | `scripts/AGENTS.md` | 2,3 | planned |
| 6 | Gates: `node scripts/skills/content-hash.mjs --check-only plugins/effect-kit/skills` (backfill if the old repo's hash algorithm drifted); full `node scripts/ci.mjs` exit 0; exercise the lockstep cue once for effect-kit (bump one manifest alone → `--plugin effect-kit` must fail; revert); commit | — | 1–5 | planned |
| 1 | Copy the payload: `cp -r ~/projects/effect-kit/plugins/effect-kit plugins/` (plain copy — DECIDED OQ1; history stays in the archived repo; payload = both plugin manifests + `skills/` incl. the node pair). Verify file count matches source (`find ... \| wc -l` both sides) | `plugins/effect-kit/` (new) | — | done |
| 2 | Registry descriptor in `scripts/lib/plugins.mjs`: `{ name: 'effect-kit', root: 'plugins/effect-kit', skills: 'plugins/effect-kit/skills', agents: null, codex: true, selftest: null, rust: null, extraJson: [], transformGuard: false, install: '/plugin marketplace update docks\n/plugin install effect-kit@docks' }` | `scripts/lib/plugins.mjs` | 1 | done |
| 3 | Marketplace entries: `.claude-plugin/marketplace.json` gains the effect-kit plugin entry (source `./plugins/effect-kit`, version matching both plugin.jsons — lockstep gate); `.agents/plugins/marketplace.json` gains the Codex entry (local source path + policy block, mirroring the session-relay entry shape via the `codex-plugin-mirror` project skill) | both catalogs | 2 | done |
| 4 | Rewrite `plugins/effect-kit/skills/AGENTS.md`: (a) replace `bash scripts/skills/guard.sh plugins/effect-kit/skills` → `node scripts/ci.mjs --plugin effect-kit`; (b) append one line — `Full authoring contract (frontmatter, CSO, scoring, content-hash idempotency, durable-anchors grammar): see plugins/docks/skills/AGENTS.md`; (c) add NO `path:NN` live anchor (durable-anchors is repo-wide). Root `AGENTS.md`: add a `plugins/effect-kit/` block to the Repository-scope tree, and the row `\| plugins/effect-kit/skills/AGENTS.md \| effect-kit skill authoring — Effect 3.x version-pinned conventions \|` to the Context-tree table | `plugins/effect-kit/skills/AGENTS.md`, `AGENTS.md` | 1 | done |
| 5 | Modularity checklist (maintainer requirement): `scripts/AGENTS.md` multi-plugin section gains the concrete "adding plugin N+1" checklist — descriptor fields → two catalog entries → optional context node → `--plugin` release; each item naming its gate | `scripts/AGENTS.md` | 2,3 | done |
| 6 | Gates: `node scripts/skills/content-hash.mjs --check-only plugins/effect-kit/skills` (backfill if the old repo's hash algorithm drifted); full `node scripts/ci.mjs` exit 0; exercise the lockstep cue once for effect-kit (bump one manifest alone → `--plugin effect-kit` must fail; revert); commit | — | 1–5 | done |
| 7 | Release + retire (DECIDED OQ2/OQ3): after the PR merges, release `effect-kit--v0.2.0` (`node scripts/release.mjs --plugin effect-kit minor`, user-gated picker as always); then retire the old repo — final commit there rewriting its README to point at the docks marketplace (`/plugin marketplace add DocksDocks/docks` → `/plugin install effect-kit@docks`), then `gh repo archive DocksDocks/effect-kit --yes` (read-only, reversible; old tags/releases stay visible) | manifests; DocksDocks/effect-kit | 6 | planned |

## Interfaces & data shapes
Expand Down Expand Up @@ -124,6 +124,12 @@ Do the migration on a feature branch (`plan/effect-kit-migration`) and open a PR
- **OQ2 old repo fate → archive + pointer README** — final commit redirects to the docks marketplace, then `gh repo archive` (read-only, reversible; tags/releases stay visible).
- **OQ3 first release → `effect-kit--v0.2.0`** — minor bump immediately after the migration PR merges, so consumers get the new marketplace coordinates.

## Notes — execution record (2026-07-03)

- Steps 1–6 executed on branch `plan/effect-kit-migration`. File-count parity 19=19; hashes were already in sync (`--check-only`: 3× unchanged — same hasher lineage).
- **On-goal deviation:** docks' refs-guard TOC rule (added after the fork) failed two references >100 lines (`effect-ts-port/references/react.md`, `effect-ts-specialist/references/services-and-layers.md`) — added `## Contents` TOCs, bumped both skills' `metadata.updated`, re-backfilled hashes. Payload-parity diff therefore shows exactly: the AGENTS.md node (planned), 2 reference TOCs + 2 SKILL.md hash/updated bumps (this deviation).
- Cue exercises: lockstep probe fired on BOTH axes (`plugin.json=0.1.2 marketplace.json=0.1.1` AND `codex=0.1.1 claude=0.1.2`), reverted clean. Full `node scripts/ci.mjs` → "All ci.mjs checks passed — 3 plugin(s) + repo-wide". Scorer 16/14/16.

## Self-review

Score: 86→93/100 · trajectory 86→93 · stopped: plateau after applying the fresh-context draft review (big-plan tier). The reviewer independently re-verified the audit claims against the source repo (descriptor fields exact, trigger-collision per-plugin confirmed, dependency-field placement semantics confirmed) and caught 5 defects, all applied verbatim: D1 both catalog entries now verbatim in Interfaces (full field set matching repo convention; `author.name` "Eduardo Marquez" for catalog consistency); D2 the no-`dependencies`-in-catalog rule added as a gotcha; D3 step 4 rewritten paste-ready; D4 feature-branch + PR flow made explicit in Environment; D5 the source docs/plans correctly described as a legacy v1 five-folder layout. OQ1–3 were subsequently answered via the picker and encoded under `## Decisions` — no residual guesses remain.
Expand Down
18 changes: 18 additions & 0 deletions plugins/effect-kit/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"name": "effect-kit",
"description": "Cross-tool Effect-TS skill kit: repo setup, idiomatic Effect 3.x patterns, and Fastify/Next.js/React → Effect porting",
"version": "0.1.1",
"author": {
"name": "DocksDocks"
},
"license": "MIT",
"skills": [
"./skills/engineering"
],
"dependencies": [
{
"name": "docks",
"marketplace": "docks"
}
]
}
15 changes: 15 additions & 0 deletions plugins/effect-kit/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "effect-kit",
"version": "0.1.1",
"description": "Cross-tool Effect-TS skill kit: repo setup, idiomatic Effect 3.x patterns, and Fastify/Next.js/React → Effect porting",
"author": {
"name": "DocksDocks"
},
"license": "MIT",
"skills": "./skills/",
"interface": {
"displayName": "effect-kit",
"shortDescription": "Cross-tool Effect-TS skill kit: repo setup, idiomatic Effect 3.x patterns, and Fastify/Next.js/React → Effect porting",
"category": "Productivity"
}
}
13 changes: 13 additions & 0 deletions plugins/effect-kit/skills/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Authoring skills (plugins/effect-kit/skills/)

Skills are the cross-tool payload — each surfaces in Claude Code, Codex, and any agentskills.io runtime. Each skill is a directory `<category>/<name>/SKILL.md` (+ optional `references/`). Sole category: `engineering/` (the Effect payload). Plan-lifecycle and authoring skills come from the sibling docks plugin — don't re-bundle them here. **Effect-only scope:** every skill in this plugin targets the Effect ecosystem (the `effect` package and official `@effect/*` / `@effect-atom/*` packages); non-Effect skills belong in docks or their own plugin.

- Description starts "Use when …" (CSO); ≤500 chars for full scorer credit.
- `name` matches the parent directory; kebab-case.
- Body ≤500 lines (sweet spot 80–310) — every line loads on activation.
- Run `node scripts/ci.mjs --plugin effect-kit` before commit (repo-wide checks still run).
- After changing a skill's meaning, bump `metadata.updated` and re-sync the hash: `node scripts/skills/content-hash.mjs --backfill plugins/effect-kit/skills`.

The Effect skills (`engineering/effect-ts-setup`, `engineering/effect-ts-port`, `engineering/effect-ts-specialist`) target **Effect 3.x stable**. Keep version-specific API claims (Schema in `effect/Schema`, `@effect/platform` HttpApi, `@effect-atom/atom-react`) grounded — verify against current docs before changing them.

Use the `write-skill` skill (from the sibling docks plugin) to author new skills from scratch. Full authoring contract (frontmatter, CSO, scoring, content-hash idempotency, durable-anchors grammar): see `plugins/docks/skills/AGENTS.md`.
1 change: 1 addition & 0 deletions plugins/effect-kit/skills/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
Loading