By kamp-us
Automate the entire GitHub issue-to-ship cycle: triage incoming issues, split epics into planned sub-issues, write code on branches, open PRs, review against acceptance criteria, heal CI failures, squash-merge verified PRs, and capture architecture decisions as ADRs.
Record an architecture decision in `.decisions/`. Trigger when the user says "/adr", "save this as an ADR", "record this decision", "ADR for X", or after a meaningful technical preference / convention is stated that future agents should respect.
Ruthlessly cut the code comments that bury the code without earning their place — the AI-written wall a reader pattern-matches as boilerplate and skips. Use this WHENEVER the user complains that comments are useless, noisy, excessive, redundant, "slop", burying the code, or getting skipped over — even if they never name a skill or file — and after a large generated change leaves a wall of narration or docblocks. Also trigger on "/deslop-comments", "deslop comments", "cut/trim the comments", "remove slop comments", "decomment this/the codebase", "too many comments", "the comments are burying the code". NOT anti-comment — it keeps load-bearing notes, collapses duplicated "why" to ADR pointers, and migrates orphaned rationale into its real home (.decisions/.patterns) instead of deleting it. Scales to a whole-codebase pass in an isolated worktree across parallel agents.
Classify a red CI run on the configured target repo into flake-vs-defect and route it — the failure triage the self-heal loop needs. Given a failed run id or a PR, fetch the failed logs, match against a small fixed signature taxonomy, and emit ONE routed action: rerun a known transient exactly once, or file a defect via report. Trigger on "heal CI for #N", "why did the run fail", "classify this failure", "/heal-ci", or from `ship-it` when checks come back red.
Turn a triaged epic into an executable, PRD-grade task ledger on the configured target repo — a plan whose product layer (problem, user stories, testing strategy) leads and engineering layer follows, split into tracer-bullet sub-issues that each trace to a user story, with a pinned `## Dependencies` topology. Trigger on "plan the epic", "plan epic
File a follow-up GitHub issue the moment you spot work you won't do right now — a bug, a refactor, a design question, an investigation, missing tests, a confusing convention. Trigger autonomously, mid-task, without asking permission, whenever you notice something worth tracking but tangential to what you're doing. Also trigger on "file an issue", "report this", "open a follow-up", "track this for later", "/report".
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
kamp.us, reborn. A single Cloudflare Worker on alchemy + Effect + fate that serves the SPA, the data plane, and every backend route.
It is not a general-purpose framework. It is the opinionated stack the kamp.us products (sozluk, pano, vote, stats) are built on, written down precisely enough that you can extend it without reverse-engineering the choices.
pnpm install
pnpm dev # vite (SPA + HMR) + alchemy dev (worker on local workerd)
pnpm typecheck # effect-tsgo across project references
pnpm deploy # vite build + alchemy deploy (use --stage <name> for isolation)
alchemy dev runs the worker locally in workerd, but the resources it binds — D1, the live Durable Object — are real Cloudflare resources in your personal dev stage. There is no offline emulator (ADR 0032).
| Layer | Choice | What it does for phoenix |
|---|---|---|
| Infra + runtime | alchemy 2.0.0-beta.45 | One Effect program declares the worker, its bindings, and the Durable Object. No wrangler.jsonc. |
| Effect system | [email protected] | Backend control flow, services, layers, errors, tracing. |
| Data protocol | fate | /fate for data views, /fate/live for live views over SSE. Server types are the schema — no codegen artifact between server and client. |
| HTTP | effect/unstable/http | HttpApiBuilder for typed JSON groups, imperative HttpRouter for raw-Request and SSE routes. No Hono, no GraphQL. |
| Auth | @alchemy.run/better-auth | BetterAuth on D1 (magic-link + bearer + email/password) via a forked CloudflareD1 Layer. Session secret comes from the BETTER_AUTH_SECRET binding — no default, fails closed if it is missing. |
| DB | Drizzle on D1 | Drizzle is a worker-level singleton; feature code calls its run/batch capability methods. |
| Live state | LiveDO on state.storage KV | One Durable Object fans out SSE. State is KV — subscriber rows + a per-connection counter. No DO SQL, no DO migrations. |
| Frontend | React 19 + Vite 8 + react-fate | Components declare views; one batched useRequest per screen; declarative mutations; live views over SSE. |
| Type-check | @effect/tsgo | Fast tsc plus Effect's LSP. |
| Lint / format | Biome 2 | Tabs, 100 col, no bracket spacing. |
| Package manager | pnpm 10 (workspace catalog) | All commands use pnpm; pnpm dlx, never npx. |
phoenix is a pnpm monorepo with effectively one app — the worker in apps/web. The docs live alongside the code: .decisions/ for the why, .patterns/ for the how.
One worker serves the React SPA (built to dist/client, served via the assets binding) and the API. It keeps precedence on its own paths — /api/*, /fate, /fate/* — and hands everything else to the SPA. The backend is one Effect program: it declares its bindings, hosts the Durable Object, and returns a fetch handler.
apps/web/
├── alchemy.run.ts # the stack — state mode + the worker resource
└── worker/
├── index.ts # entry — DO host, bindings, layer assembly
├── env.ts # deploy-time env resolution (fails closed)
├── db/ # D1 binding, Drizzle schema, migrations, keyset cursors
├── http/ # router composition (app.ts) + health route
└── features/ # every named grouping, one folder each
├── fate/ # the fate config + route, layer assembly, barrels
├── fate-live/ # the live SSE plane — LiveDO + LivePublisher + protocol
├── pasaport/ # auth — better-auth fork + session capability
├── sozluk/ # product — dictionary
├── pano/ # product — link aggregator
├── vote/ # product — votes
├── stats/ # product — read-only counts
└── text/ # utility — excerpt()
features/ is the home for any named app-level grouping — product domains, framework concerns, and single-file utilities alike. If a concern has a coherent name worth grouping, it's a feature; the few things that aren't (entry, env, db, http) sit beside features/ (ADR 0036).
npx claudepluginhub kamp-us/phoenix --plugin kampus-pipelineHarness-native ECC operator layer - 67 agents, 271 skills, 92 legacy command shims, reusable hooks, rules, selective install profiles, and production-ready workflows for Claude Code, Codex, OpenCode, Cursor, and related agent harnesses
Core skills library for Claude Code: TDD, debugging, collaboration patterns, and proven techniques
Plugin-safe Claude Code distribution of Antigravity Awesome Skills with 1,561 supported skills.
v9.44.1 — Patch release for Gemini environment/version detection and qwen auth gating. Run /octo:setup.
AI-powered development tools for code review, research, design, and workflow automation.