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
4 changes: 2 additions & 2 deletions .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
"anti-slop"
],
"license": "PolyForm-Noncommercial-1.0.0",
"version": "5.2.0",
"version": "5.2.1",
"homepage": "https://github.com/agent-kit-startup/agent-kit",
"repository": "https://github.com/agent-kit-startup/agent-kit",
"logo": "dashboard/logo.svg",
"logo": "dashboard/logo-marketplace.svg",
"rules": ".cursor/rules",
"skills": ".cursor/skills/core",
"agents": ".cursor/agents",
Expand Down
2 changes: 1 addition & 1 deletion .cursor/agent-kit.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"version": "5.2.0",
"version": "5.2.1",
"protected": [
".cursor/HANDOFF.md",
".cursor/agents/test-suites.md",
Expand Down
2 changes: 1 addition & 1 deletion .cursor/commands/plan-external-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ Same contract as `.cursor/context/templates/plan-external-review-prompt.md` (Cla

This command does **not** require Ask questions to launch Claude.

After a successful autonomous arm in chat, **do not** hand off with "run `/plan-review-triage` later". Wait for the monitor file, then run `/plan-review-triage` Ask in the same session (explicit monitor path(s) preferred). Paste-only: wait starts after the operator pastes and Claude is writing. Bare `/plan-review-triage` selects untriaged / git-fresh monitors, but path paste remains the reliable post-batch path. For **multiple** fresh paths (batch arm or Field Report **Review all**), paste the full path list once; `/plan-review-triage` uses **one** Ask when outcomes are uniform (durable heading on every file) and sequential Asks when mixed — do not tell the operator to "reply N times". That command summarizes residuals and offers options (write residuals plan / fix nits only / ack and stop) via Ask questions. Do not auto-implement from Claude findings without HITL. If no `plan-monitor-*.md` exists after timeout/soft-fail, say so and stop (nothing to triage; Field Report owed).
After a successful autonomous arm in chat, **do not** hand off with "run `/plan-review-triage` later". Wait for the monitor file, then run `/plan-review-triage` Ask in the same session (explicit monitor path(s) preferred). Paste-only: wait starts after the operator pastes and Claude is writing. Bare `/plan-review-triage` selects untriaged / git-fresh monitors, but path paste remains the reliable post-batch path. For **multiple** fresh paths (batch arm or `/run-plan-all` queue-end), paste the full path list once; `/plan-review-triage` uses **one** Ask when outcomes are uniform (durable heading on every file) and sequential Asks when mixed. Do not tell the operator to "reply N times". That command summarizes residuals and offers options (write residuals plan / fix nits only / ack and stop) via Ask questions. Do not auto-implement from Claude findings without HITL. If no `plan-monitor-*.md` exists after timeout/soft-fail, say so and stop (nothing to triage). There is no `/field-report-review` command and no Mission Control **Review all** button.

## References

Expand Down
12 changes: 6 additions & 6 deletions .cursor/commands/plan-review-triage.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ description: Triage residuals from an external plan review monitor and guide nex

Triage residuals from a **Claude external plan review** monitor. Select the right monitor(s) (untriaged / explicit paths, **not** raw mtime), summarize open residuals, and guide next steps with **Ask questions**.

Supports **multi-path walk**: iterate multiple monitors in blocking-first then debt order when given several report paths (for example from Field Report **Review all**, or the path list printed by `/plan-external-review` after a batch). When remaining monitors share a **uniform** outcome class, use **one** batch Ask (still write a durable triage heading on every target). Mixed outcomes fall back to sequential Asks. Operator may expand Write residuals to the whole remaining set in one reply (`1 and write all the other`); enqueue via paced per-monitor Tasks (wave size 2) or one combined plan (see Step 6).
Supports **multi-path walk**: iterate multiple monitors in blocking-first then debt order when given several report paths (for example the path list printed by `/plan-external-review` after a batch, or a Flight Log **Copy triage command** paste). When remaining monitors share a **uniform** outcome class, use **one** batch Ask (still write a durable triage heading on every target). Mixed outcomes fall back to sequential Asks. Operator may expand Write residuals to the whole remaining set in one reply (`1 and write all the other`); enqueue via paced per-monitor Tasks (wave size 2) or one combined plan (see Step 6).

## When to Use

Expand All @@ -30,7 +30,7 @@ Multi-path (preferred after a fresh external review; walk specific monitors in o
/plan-review-triage .cursor/memory/plan-monitor-slug-1.md .cursor/memory/plan-monitor-slug-2.md
```

When paths are provided, the agent walks them in the given order (blocking first, then debt when auto-ordered by **Review all**). After gap-aware skip, if two or more monitors still need a decision and share a **uniform** outcome class, use **one** Ask for the set (batch Ack or one residuals summary); otherwise Ask **per** monitor. Every decided monitor still gets its own durable triage heading.
When paths are provided, the agent walks them in the given order (blocking first, then debt when auto-ordered). After gap-aware skip, if two or more monitors still need a decision and share a **uniform** outcome class, use **one** Ask for the set (batch Ack or one residuals summary); otherwise Ask **per** monitor. Every decided monitor still gets its own durable triage heading.

**Do not rely on bare `/plan-review-triage` after a batch external review** when the launcher (or Claude closeout) already printed explicit monitor paths: paste that path list so triage cannot miss the files just written.

Expand All @@ -44,7 +44,7 @@ Before Asking on a path, skip with a **one-line note** (do not abort the walk) w
| No open gaps (empty Still open / no residual items / clean Outcome) | `Skip plan-monitor-x.md: no open residuals` |
| Path missing or not a `plan-monitor-*.md` under `.cursor/memory/` | `Skip <path>: not a monitor file` |

Field Report **Review all** already pastes a gap-filtered path list; the skip rules above are defensive for hand-built multi-path lists. Per-row **Copy triage command** remains available for intentional one-monitor triage of a clean or already-visible row.
The skip rules above are defensive for hand-built multi-path lists. Flight Log per-row **Copy triage command** remains available for intentional one-monitor triage of a clean or already-visible row. There is no `/field-report-review` command and no Mission Control **Review all** button.

## Preconditions

Expand All @@ -55,7 +55,7 @@ Field Report **Review all** already pastes a gap-filtered path list; the skip ru

If no `plan-monitor-*.md` exists (and no paths given), say so once, suggest `/plan-external-review` after prefight files exist, and **stop**. Do not invent residuals.

If monitors exist but **all** are already triaged (and none are new/staged without a heading), say so once, suggest Field Report **Review all** or `/plan-external-review` if new reviews are owed, and **stop**. Do not invent residuals from an already-acked file.
If monitors exist but **all** are already triaged (and none are new/staged without a heading), say so once, suggest `/plan-external-review` if a new review is owed, and **stop**. Do not invent residuals from an already-acked file. Do not suggest Field Report **Review all** or `/field-report-review`: neither exists.

## What to Do

Expand All @@ -78,7 +78,7 @@ Use the returned `monitors[].relativePath` list as the walk order. Cite: ADR `20
3. **Untriaged scan:** all `.cursor/memory/plan-monitor-*.md` without a triage heading. Prefer those with open gaps (numbered Residual items, non-empty Still open, substantive Standing finding; same spirit as Field Report `reportHasOpenReviewGaps`), but still include clean untriaged files so the operator can **Ack and stop**. If several match, walk them (blocking/debt order when obvious; otherwise newest **content** review date, then mtime as a weak tie-break only).
4. **Hard stop:** if every candidate is already triaged, report "no untriaged monitors" and stop. Do **not** Ask on an already-triaged file just because its mtime is newest.

**Gap-aware skip** (empty Still open / no residual items) applies to **explicit multi-path** lists (e.g. Field Report **Review all**). Bare-command selection above does **not** skip clean untriaged monitors: they still need a durable triage heading.
**Gap-aware skip** (empty Still open / no residual items) applies to **explicit multi-path** lists (launcher-printed paths or hand-built lists). Bare-command selection above does **not** skip clean untriaged monitors: they still need a durable triage heading.

**Then read the selected set:**

Expand All @@ -97,7 +97,7 @@ When one path is selected, continue with Steps 2-5. When several are selected, u

When **paths provided**:

1. Treat paths as an ordered list: blocking paths first, debt paths second (same order as the **Review all** copy target).
1. Treat paths as an ordered list: blocking paths first, debt paths second (Field Report classification order).
2. For each path, apply **Gap-aware skip** (above). Only remaining gap monitors get a Task(explore) dispatch (or batch them in one worker if multiple paths).
3. **Fallback:** when Task dispatch is unavailable, verify each path is an existing file under `.cursor/memory/` matching `plan-monitor-*.md`. Non-existent, non-monitor, already-triaged, or no-open-residual paths are skipped with a one-line note; the walk continues.
4. Read the worker summary for each path that was not skipped.
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,18 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and

## [Unreleased]

## [5.2.1] - 2026-08-14

### Changed

- Marketplace SoT no longer claims the public plugin manifest is **4.8.9** / metadata-only. Public `.cursor-plugin/plugin.json` is **5.2.0** with explicit component paths; live Cursor Marketplace submission stays publisher HITL and unchecked (`docs/marketplace.md`, `docs/cursor-update-awareness.md`, `docs/comms-channel-map.md`, `docs/cursor-native-audit.md`).
- Marketplace / plugin logotype is `dashboard/logo-marketplace.svg`: 512×512 (1:1) SVG, transparent square canvas, rounded `#0b0e14` plate, Cursor-skin stroke mark centered. Mission Control chrome still uses unplated `dashboard/logo.svg` (legacy) and `dashboard/logo-cursor.svg` (Cursor skin).
- Production also versions the Mission Control logo marks (helmet, cursor-skin, marketplace plate) under `assets/production/` (private; not public-synced).

### Fixed

- `/plan-review-triage` no longer tells agents to suggest Field Report **Review all** or `/field-report-review` when every monitor is already triaged. Next step is `/plan-external-review` if a new review is owed, or a Flight Log **Copy triage command** paste. There is no `/field-report-review` slash command and no Mission Control **Review all** button.

## [5.2.0] - 2026-08-14

### Added
Expand Down
13 changes: 13 additions & 0 deletions dashboard/logo-marketplace.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/comms-channel-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Do not market unchecked full autonomy. Staging may be automatic; production (`/g
| GitHub Discussions | - | - | **never** (until enabled) | [SUPPORT.md](../.github/SUPPORT.md) states Discussions is not enabled; issues are the support channel | Do not invent a Discussions presence |
| Slack | Low | Med | **defer** | No official Mission Kit Slack is documented in this repo | Do not create or post until an operator-owned workspace exists |
| Discord | Low | Med | **defer** | Same as Slack | Same |
| Cursor Marketplace listing | - | - | **never** (this loop) | Distribution channel owned by parked `submit-cursor-marketplace` | Reference only; no submit from this plan |
| Cursor Marketplace listing | - | - | **never** (this loop) | Distribution channel owned by `submit-cursor-marketplace` (publisher HITL; public manifest **5.2.0**) | Reference only; no submit from a comms plan |

**Never:** paid ads as the first delivery; scraping PII into recaps; silent cross-network posting; renaming npm/CLI/slash to Mission Kit; overloading Agent Personas as the poster.

Expand Down
6 changes: 3 additions & 3 deletions docs/cursor-native-audit.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Audit of Cursor-specific artifacts in the Agent Kit repository: what exists, wha
| `.cursor/commands/` | Present (27 commands) | DevOps spine + handoff + orchestration + backlog/dashboard |
| `.cursor/hooks/` (shell) | Present | Git pre-commit + edit validators; not wired to Cursor agent events |
| `.cursor/hooks.json` | **Present (L0)** | 5 events (`sessionStart`, `preCompact`, `beforeShellExecution`, `afterFileEdit`, `beforeSubmitPrompt`); no `stop` hook |
| `.cursor-plugin/plugin.json` | Present | Marketplace-ready at **5.2.0**, aligned with product; declares explicit component paths |
| `.cursor-plugin/plugin.json` | Present | Marketplace-ready at **5.2.1**, aligned with product; declares explicit component paths |
| `git-hooks/prepare-commit-msg` | Present | Strips Cursor co-author trailer |
| `AGENTS.md` (dogfood) | **Present** | Root cross-IDE contract; points at `.cursor/project-context.md` |
| `mcp.json` | Absent | No project-level MCP config in core |
Expand All @@ -28,7 +28,7 @@ Audit of Cursor-specific artifacts in the Agent Kit repository: what exists, wha
| Field | Value |
|-------|-------|
| name | `agent-kit` |
| version | `5.2.0` (pinned to `KIT_VERSION` by `packages/cli/src/lifecycle/l0.test.ts`) |
| version | `5.2.1` (pinned to `KIT_VERSION` by `packages/cli/src/lifecycle/l0.test.ts`) |
| description | HITL framework for AI-assisted IDEs (plan, handoff, staging→prod, memory loop, anti-slop) |
| components | `rules`, `skills`, `agents`, `commands`, `hooks` declared explicitly |

Expand All @@ -39,7 +39,7 @@ Audit of Cursor-specific artifacts in the Agent Kit repository: what exists, wha
- `skills` points at `.cursor/skills/core`, not `.cursor/skills`: discovery matches direct children holding a `SKILL.md`, and `core/`/`community/` are one level too shallow. This also keeps stack skills on `agent-kit add`.
- CLI `init` does **not** write `.cursor-plugin/plugin.json` into target projects; no generator under `packages/cli/src/generator/` references it. (Corrected 2026-08-05; the earlier claim was stale.)

**Gap:** Plugin packaging and Marketplace submission flow are not documented end-to-end in `docs/getting-started.md`. See [marketplace.md](marketplace.md) and Phase B registry cutover plan. Live submission stays publisher HITL and is gated on the public mirror carrying the 5.2.0 manifest.
**Gap:** Plugin packaging and Marketplace submission flow are not documented end-to-end in `docs/getting-started.md`. See [marketplace.md](marketplace.md) and Phase B registry cutover plan. Live submission stays publisher HITL. The public mirror already carries the **5.2.1** manifest with explicit component paths.

---

Expand Down
2 changes: 1 addition & 1 deletion docs/cursor-update-awareness.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Opt-in advisory for Cursor product updates (releases, changelog entries, new MCP
| No Field Reports | `fieldReportRecommended` is always `false` |
| Conveyor | Confirmed gaps → Ask → `/backlog-add` or `/dogfood` (lane-aware) |
| Separate from kit update | Kit self-release uses `updateCheck` / `/update` (ADR `2026-07-27_consumer-autoupdate-check-opt-in.md`) |
| Native-audit prose | Marketplace / version-prose refresh stays on parked `submit-cursor-marketplace` |
| Native-audit prose | Native-audit plugin version is **5.2.0**. Live Marketplace submission stays on `submit-cursor-marketplace` (publisher HITL) |

## Detection source

Expand Down
6 changes: 3 additions & 3 deletions docs/marketplace.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ The plugin root is the **parent of `.cursor-plugin/`** - the repo root. Cursor's
| `agents` | `.cursor/agents` | 14 subagent definitions |
| `commands` | `.cursor/commands` | 27 slash commands |
| `hooks` | `.cursor/hooks.json` | Thin adapters; every one is fail-open, and `sessionStart` surfaces the degraded-mode diagnostic (see "Hook resolution boundary" below) |
| `logo` | `dashboard/logo.svg` | Must sit on a path inside `scripts/public-sync.manifest`. `assets/**` is **not** synced and would be dropped from the public mirror without failing anything |
| `logo` | `dashboard/logo-marketplace.svg` | 512×512 SVG (1:1), transparent canvas, rounded plate `#0b0e14`, Cursor-skin stroke mark from `logo-cursor.svg` centered (~10% padding). Chrome keeps unplated `logo.svg` (legacy helmet) and `logo-cursor.svg` (16px header). Must sit on a path inside `scripts/public-sync.manifest`. `assets/**` is **not** synced and would be dropped from the public mirror without failing anything. Production copies of the three marks live under `assets/production/` (private; not public-synced) |

#### Hook resolution boundary

Expand All @@ -96,7 +96,7 @@ The promotion path is ready only when the evidence gate is green; each step belo
1. **Evidence gate green:** `npm run evidence:knowledge-classification:check` passes on the staging tip being promoted. The shared ledger (`docs/evidence/knowledge-classification.json`) has **one regeneration owner** — the ship-5.0 evidence closeout (clean-tree regen guard + regen shipped in the PR #719–#725 stack). Marketplace-side plans record the dependency and never regenerate the ledger themselves. Note: the check recomputes from the working tree, so uncommitted `_index.md` rows pointing at untracked `plan-monitor-*.md` files fail it locally; verify at committed HEAD content (e.g. a clean worktree) when audit WIP is present.
2. **Merge pending staging PRs** in stack order (operator merge gate).
3. **`/git-prod`** (never agent-initiated) → annotated `vX.Y.Z` tag → `sync-public` PR, per the submission checklist above.
4. **Public mirror recheck:** verify the public repo exposes `.cursor-plugin/plugin.json` at the released version with explicit component paths — owned by the parked `submit-cursor-marketplace.plan.md` (`recheck-public-mirror`), alongside the publisher HITL submission gate.
4. **Public mirror recheck:** verify the public repo exposes `.cursor-plugin/plugin.json` at the released version with explicit component paths. Owned by `submit-cursor-marketplace.plan.md` (`recheck-public-mirror`), alongside the publisher HITL submission gate. Rechecked 2026-08-14: public manifest is **5.2.0** with explicit `rules` / `skills` / `agents` / `commands` / `hooks`.
5. **Post-promote plugin smoke:** rerun the local-plugin smoke checklist ([plugin-smoke-checklist.md](plugin-smoke-checklist.md)) against the public ref before submitting.

## Listing UX (CLI)
Expand All @@ -117,5 +117,5 @@ Future nicety (not required for this to-do): `agent-kit search <query>` over `re
- [x] Builder emits version/category into `registry.json`
- [x] CONTRIBUTING quality gate documented
- [x] This marketplace doc + plugin.json thesis/version note
- [ ] Live Cursor Marketplace submission (publisher ops / HITL) - packaging ready at **5.0.0**; blocked on promoting that manifest to the public mirror (still **4.8.9**)
- [ ] Live Cursor Marketplace submission (publisher ops / HITL) - packaging ready at **5.2.0** on the public mirror (explicit component paths). Submit remains operator HITL; this box stays unchecked until a real submission.
- [x] Phase B cutover so public catalog is not overwritten by private sync
Loading