Skip to content
Closed
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
2 changes: 1 addition & 1 deletion .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"anti-slop"
],
"license": "PolyForm-Noncommercial-1.0.0",
"version": "5.6.0",
"version": "5.7.0",
"homepage": "https://github.com/agent-kit-startup/agent-kit",
"repository": "https://github.com/agent-kit-startup/agent-kit",
"logo": "dashboard/logo-marketplace.svg",
Expand Down
24 changes: 13 additions & 11 deletions .cursor/agent-kit.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{
"schemaVersion": 1,
"version": "5.6.0",
"version": "5.7.0",
"protected": [
".claude/commands/agent-kit.md",
".cursor/HANDOFF.md",
".cursor/agents/test-suites.md",
".cursor/context/backups/**",
Expand All @@ -15,12 +16,17 @@
".cursor/skills/community/cursor-skills-node/SKILL.md",
".cursor/skills/core/docs-repo/SKILL.md",
"AGENTS.md",
"CLAUDE.md",
"templates/CODEOWNERS",
"templates/gitlab-ci-content.yml",
"templates/gitlab-ci-docker.yml",
"templates/gitlab-ci-firebase.yml"
],
"profile": "default",
"packs": [
"devops",
"quality"
],
"skills": [
"clean-code",
"clickup",
Expand All @@ -32,19 +38,15 @@
"sql-postgres",
"ux-message-flows"
],
"registry": {
"url": "https://github.com/agent-kit-startup/agent-kit-dev",
"ref": "staging"
},
"packs": [
"devops",
"quality"
],
"personalization": {
"contractVersion": 1,
"generatorVersion": "4.5.1",
"generatorVersion": "5.4.0",
"origin": "repository-profile",
"resultPath": ".cursor/context/personalization.json"
},
"installedAt": "2026-07-25T12:09:19.292Z"
"registry": {
"url": "https://github.com/agent-kit-startup/agent-kit-dev",
"ref": "staging"
},
"installedAt": "2026-08-20T17:28:41.571Z"
}
2 changes: 1 addition & 1 deletion .cursor/commands/dogfood.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Without arguments, summarize the current chat turn into the topic and body.

1. **Detect lane before writing.**
- **Factory lane** — this checkout is the canonical `agent-kit-dev` repository (`origin` remote contains `agent-kit-dev`, or `dogfood/` already exists at repo root). Write to `dogfood/cursor_<topic>_<date>.md` and update `dogfood/README.md` Unprocessed index.
- **Consumer lane** — any other project with an Agent Kit install (`.cursor/agent-kit.json` exists). Write to `.cursor/dogfood/cursor_<topic>_<date>.md` and a local index. Do **not** track the folder in git; it should already be gitignored by the base install.
- **Consumer lane** — any other project with an Agent Kit install (`.cursor/agent-kit.json` exists). Write to `.cursor/dogfood/cursor_<topic>_<date>.md` and a local index. Do **not** track the folder in git; `agent-kit install`/`doctor` gitignores `.cursor/dogfood/` via the kit-owned `.gitignore` merge (run `agent-kit doctor` if an older install predates this and the folder isn't yet ignored).
- **Unknown lane** — stop and ask the operator which lane to use.
2. **Hygiene strip (mandatory).** Remove before writing:
- Consumer workspace names, project names, domain names, or external product names.
Expand Down
2 changes: 1 addition & 1 deletion .cursor/commands/git-prod.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Follow the **git prod** routine to promote `origin/staging` to `origin/main` (pr

1. **Read** the "Prompt: git prod" section in `autogit/gitupdate.md` (when it exists in the project).
2. Critical validation: no uncommitted local changes; never commit directly to main.
3. Close the release in the CHANGELOG (move `[Unreleased]` to a dated version) before merging.
3. Close the release in the CHANGELOG (move `[Unreleased]` to a dated version) before merging. Keep `<!-- changelog-private -->` fences. Public excerpt: `node scripts/public-changelog.mjs --version <X.Y.Z>` (GitHub Release body) and `--blurb` (landing `--notes`).
4. Show a summary of the changes (diff/log) between staging and main and **ask for explicit confirmation using Ask questions tool** before merging and pushing to main.

Options: `Proceed with production deploy` / `Review changes first` / `Cancel`
Expand Down
92 changes: 92 additions & 0 deletions .cursor/commands/kit-prod.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
name: kit-prod
description: Run the git-prod routine, then update and promote the public landing only when this promotion includes a product release.
---

# Kit prod

Wraps native **git prod**. Does not replace `/git-prod`. Native `/git-prod` promotes the repo (`staging` → `main`, tag, npm) and must not put the landing on the air by itself. This bundle may promote the landing after git prod, only when a release changelog actually changed.

**Runs in the main window by default.** Do not dispatch this command to a Task subagent by default.

## 1. Git prod HITL (do not steal)

Follow the **Prompt: git prod** section in `autogit/gitupdate.md` and `.cursor/commands/git-prod.md`. Do not copy that routine into this file.

Before merge or push to `main`, Ask questions with the **same** git-prod labels. Do not rename them, skip them, or fold landing into this Ask.

Options: `Proceed with production deploy` / `Review changes first` / `Cancel`

**Fallback:** if Ask questions is unavailable, present the same labels as one numbered list and wait.

`Cancel` or skipped: stop. No merge, no landing.

`Review changes first`: stop after the summary; wait for a later confirm.

`Proceed with production deploy`: continue the git-prod routine (close release, merge, authorized main push, tag, public sync, post-prod verification).

## 2. Decide whether landing work applies

Only after git prod **succeeds**. Landing scripts must exist (`pnpm landing:promote`).

Run `node scripts/kit-landing-gate.mjs --mode prod`. Same rules if the script is missing:

**Run the landing path when:**

- This promotion closed a CHANGELOG version (moved `[Unreleased]` to `## [X.Y.Z]`) or cut a product `v*` tag / manifest bump.
- `scripts/lib/public-changelog.mjs` `extractPublicReleaseNotes` / `latestClosedPublicRelease` has product-facing bullets, not only kit-memory monitors.

**Skip landing (do not Ask a second time) when any of:**

- Git prod did not run (`Cancel` / `Review changes first`).
- No landing scripts in `package.json`.
- No product release changelog in this promotion (`docs(memory):` / `chore(kit):` only).
- The gate prints `"needed": false`.

Repo-only production stays native `/git-prod`.

## 3. Landing HITL (extra confirm)

Ask questions. This Ask is **in addition to** the git-prod Ask, not a replacement. Fallback: numbered list, wait; skip or cancel means stop.

Options:

- `Promote landing to production`
- `Skip landing (repo only)`
- `Cancel`

`Cancel` or skipped: stop. Repo is already on `main`; do not revert git prod.

`Skip landing (repo only)`: stop. Report skipped.

`Promote landing to production`: continue.

## 4. Surgical update + promote (this monorepo)

Do not hand-edit landing markup, CSS, or JS. Do not invent a second updater. The only stamp is `pnpm landing:update-release` (`scripts/update-landing-release.mjs`).

**Fields stamped** (existing canvas nodes, not a second render path):

- Version: `a[data-release-version]` inside `p.ak-brand` (pill "New release") becomes text `Mission Kit X.Y.Z`, href `https://github.com/agent-kit-startup/agent-kit/releases/tag/vX.Y.Z` (public repo only).
- Notes: `div[data-changelog-content]` becomes a short public blurb in a single `<p>`.

**Fail-closed (do not pass these):** `CHANGELOG.md` as `--notes-file`; Keep-a-Changelog headers (`## [`); empty notes; notes over 1200 characters; private `agent-kit-dev` release URLs.

**Sync trap:** `landing:sync` overwrites `remote/` wholesale. Re-run `landing:update-release` after every Design zip or `landing:build:check` fails.

1. **Public excerpt.** `node scripts/public-changelog.mjs --version <X.Y.Z> --blurb` (stdout = `publicNotesBlurb` for `--notes`). `--json` `notes` is GitHub Release body; `publicNotesBlurb` is landing. Gate `stamp.notes` is the same blurb. Never flatten by hand.
2. **Stamp (does not deploy).** Exact CLI:

```bash
NOTES=$(node scripts/public-changelog.mjs --version <X.Y.Z> --blurb)
pnpm landing:update-release -- --version <X.Y.Z> --notes "$NOTES"
pnpm landing:update-release -- --version <X.Y.Z> --notes-file ./public-release-notes.txt
pnpm landing:update-release -- --version <X.Y.Z> --notes "$NOTES" --dry-run
```

Version is the closed release / `stamp.version`. Optional `--dry-run` first.
3. **Build.** `pnpm landing:build` so `dist/` matches the stamp. This is the field-update step, not promote.
4. **Promote.** `pnpm landing:promote`. The promote script itself must not rebuild (existing invariant). Do not use `landing:deploy:staging` as a substitute for promote.
5. Update `.cursor/HANDOFF.md` ("promoted to production"; landing URL if promoted).

Never run the landing half from `/run-plan` or `/run-plan-all`. Those commands must not steal `/git-prod` HITL.
81 changes: 81 additions & 0 deletions .cursor/commands/kit-staging.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
---
name: kit-staging
description: Run the git-staging routine, then update and deploy the public landing to staging only when this change includes a product changelog or release.
---

# Kit staging

Wraps native **git staging**. Does not replace `/git-staging`. Native `/git-staging` stays git-only and must not deploy the landing.

**Runs in the main window by default.** Do not dispatch this command to a Task subagent by default.

## 1. Git staging (SoT)

Follow the **Prompt: git staging** section in `autogit/gitupdate.md` (same contract as `/git-staging`). Do not copy that routine into this file.

Also honor `.cursor/commands/git-staging.md` (monitor hygiene, lint evidence, Evidence-checks merge gate).

## 2. Decide whether landing work applies

Landing steps run only when this repo has `pnpm landing:deploy:staging`. Consumers without those scripts: stop after git staging; report `landing skipped: no-landing-scripts`.

Run `node scripts/kit-landing-gate.mjs --mode staging` (prints `{ needed, reason, stamp }`). Same rules if the script is missing:

**Run the landing path when all of:**

- Git staging completed (merged to `origin/staging`, or the project's pre-prod branch).
- Public `[Unreleased]` has at least one product-facing bullet (CLI, slash commands, dashboard, landing, npm, consumer-visible behavior), after `scripts/lib/public-changelog.mjs` (`toPublicChangelog` / Unreleased section).
- This change is not only a `docs(memory):` / `chore(kit):` monitor, Audits row, or HANDOFF-only commit.

**Skip landing (do not Ask) when any of:**

- No landing scripts in `package.json`.
- `[Unreleased]` was left empty because git staging found no significant product change.
- The only remaining public bullets are kit-memory (plan-monitors, Audits index rows, session HANDOFF).
- The gate prints `"needed": false`.

Repo-only shipping stays native `/git-staging`.

## 3. Landing HITL (only if landing-worthy)

Ask questions. Fallback: one numbered list, wait; skip or cancel means stop.

Options:

- `Deploy landing to staging`
- `Skip landing (repo only)`
- `Cancel`

`Cancel` or skipped: stop. Do not deploy. Git staging already landed; do not revert it.

`Skip landing (repo only)`: stop after git staging. Report skipped.

`Deploy landing to staging`: continue.

## 4. Surgical landing update (this monorepo)

Do not hand-edit landing markup, CSS, or JS. Do not invent a second updater. The only stamp is `pnpm landing:update-release` (`scripts/update-landing-release.mjs`).

**Fields stamped** (existing canvas nodes, not a second render path):

- Version: `a[data-release-version]` inside `p.ak-brand` (pill "New release") becomes text `Mission Kit X.Y.Z`, href `https://github.com/agent-kit-startup/agent-kit/releases/tag/vX.Y.Z` (public repo only).
- Notes: `div[data-changelog-content]` becomes a short public blurb in a single `<p>`.

**Fail-closed (do not pass these):** `CHANGELOG.md` as `--notes-file`; Keep-a-Changelog headers (`## [`); empty notes; notes over 1200 characters; private `agent-kit-dev` release URLs.

**Sync trap:** `landing:sync` overwrites `remote/` wholesale. Re-run `landing:update-release` after every Design zip or `landing:build:check` fails.

1. **Public excerpt.** `node scripts/public-changelog.mjs --version Unreleased --blurb` (stdout = `publicNotesBlurb` for `--notes`). Same field as gate `stamp.notes`. `--json` `notes` is GitHub Release body, not landing. Never flatten by hand. Not Hostinger tokens, not CI internals, not plan-monitor notes.
2. **Stamp (does not deploy).** Exact CLI:

```bash
NOTES=$(node scripts/public-changelog.mjs --version Unreleased --blurb)
pnpm landing:update-release -- --version <X.Y.Z> --notes "$NOTES"
pnpm landing:update-release -- --version <X.Y.Z> --notes-file ./public-release-notes.txt
pnpm landing:update-release -- --version <X.Y.Z> --notes "$NOTES" --dry-run
```

Version is `package.json` / `stamp.version`. Optional `--dry-run` first.
3. **Build, then staging deploy.** `pnpm landing:build`, then `pnpm landing:deploy:staging`. Never `pnpm landing:promote` from this command.
4. Optional: `pnpm landing:verify:staging`.
5. Update `.cursor/HANDOFF.md`. Never `/git-prod` from this command.
1 change: 1 addition & 0 deletions .cursor/commands/run-plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ After a findings-contract (or `review-*`) tick returns findings, read `.cursor/c
1. Mark the tick's to-do as `completed` in the plan's frontmatter
2. Update `.cursor/HANDOFF.md` (include `Mode: run-plan (<strategy>)`). HITL claims (parked, approved, deferred, confirmed, stopped-by-operator) must record Ask id, operator reply, or `agent-inferred`.
3. **Cadence ledger:** run `.cursor/scripts/field-report-cadence-bump.sh tick` (increments the gitignored Field Report activity counter; may open a cadence warning when threshold + unreviewed work). Never commit the ledger. ADR: `2026-07-27_field-report-activity-review-cadence.md`.
3a. **Context-usage cap (Cursor only):** if this tick's session observed a `preCompact` hook firing (a `Context compacting (...)` message), the emitted `user_message` already tells you whether it crossed the `<=50%` per-agent target (ADR `decisions/2026-08-24_agent-context-usage-cap-window-pressure.md`): a message containing "forced checkpoint" means treat the HANDOFF update in step 2 as **mandatory before continuing to the next tick**, not optional bookkeeping. No live per-tick poll exists — this is reactive to an observed firing, not a proactive scan. Claude Code sessions have no `preCompact` signal at all (Cursor-only hook; see the ADR's coverage-gap note) — nothing to check there.
4. If `git status` has commitable changes: run the `/git-staging` routine **without asking for confirmation** (authorized by this command), following `autogit/gitupdate.md` inventory → theme-bucket → ship. Do **not** skip because the diff is "just" HANDOFF or memory: versioned HANDOFF, `plan-monitor-*.md`, and `_index.md` Audits rows are a `docs(memory):` / `chore(kit):` bucket (own commit when the product theme differs). **Monitor hygiene:** warn on untracked or unrelated dirty `.cursor/memory/plan-monitor-*.md`; stage **add-by-name only**; never broad `git add` of `.cursor/memory/` WIP into a product commit. Unrelated-plan monitors still get a kit/memory bucket in this staging run; they do not ride inside the product commit. 1 MR/PR -> staging branch -> merge.
5. No commitable diff (working tree clean except gitignored paths and hard excludes): just HANDOFF + plan status

Expand Down
2 changes: 1 addition & 1 deletion .cursor/context/templates/handoff.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Machine fields below must stay as `- **Field:**` bullets (Mission Control parses those). Do not replace Backlog / Parked / Run queue with `##` section headings alone.

**Mid-batch monitor pointers are not durable here.** `.cursor/HANDOFF.md` is gitignored session state. Pointers to sibling monitors must live in the tracked `.cursor/memory/_index.md` Audits row for the watched monitor (R14-paired in the same commit). Cite that row in the plan or monitor notes; do not rely on a HANDOFF line as delivery evidence.
**Mid-batch monitor pointers are not durable here.** `.cursor/HANDOFF.md` is gitignored session state — `agent-kit install`/`doctor` merges this entry into `.gitignore` (kit-owned ignore patterns; see `packages/cli/src/scanner/detect-repository.ts`). Pointers to sibling monitors must live in the tracked `.cursor/memory/_index.md` Audits row for the watched monitor (R14-paired in the same commit). Cite that row in the plan or monitor notes; do not rely on a HANDOFF line as delivery evidence.

### HITL provenance (required)

Expand Down
50 changes: 50 additions & 0 deletions .cursor/context/templates/plan-fable-copy-prompt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Fable copy-writer prompt

This is **not** a findings audit. Ignore any launcher wrapper that asks for a findings-contract, PASS/GAP/FAIL tables, Still open residuals, advisor escalate, or `/plan-review-triage` closeout. Do not invent commands, hosts, or IDE parity.

## Role

You are writing usage-first documentation for Mission Kit / Agent Kit. Follow the plan's `## Fable copy brief` and `## Technical fact sheet` as the only fact sources. Do not treat README, HANDOFF, or claim matrices as proof.

## Read

1. The plan file named in the launcher prompt (`## Fable copy brief`, `## Technical fact sheet`).
2. Do not start an audit of completed to-dos.

## Write

Create or refresh `.cursor/memory/plan-monitor-docs-usage-first-anti-slop-revamp.md`.

Near the top, include exactly one HTML comment line so `--wait-monitor` can succeed:

`<!-- audits-wait-fresh: created -->`

(use `updated` instead of `created` if the file already existed).

Return copy under these headings only (subheads under them are allowed):

```
## Consumer copy
### README
### getting-started
## Contributor copy
### CONTRIBUTING
```

## Voice

- Senior open-source maintainer. Short sentences. Concrete commands.
- No inventory dumps, no "layer" taxonomy, no claim matrices, no "comprehensive ecosystem".
- No em dash as a sentence connector.
- Dual-name: Mission Kit for the product; Agent Kit for npm/CLI/slash; Mission Control only for the dashboard/TUI.

## Forbidden

- Do not edit README, `docs/getting-started.md`, `docs/CONTRIBUTING.md`, or other product files.
- Do not rewrite the naming glossary.
- Do not `/git-prod`.
- Do not append an Audits findings table.

## Index

If you create the monitor, add one Audits row to `.cursor/memory/_index.md` in the same pass (add-by-name later; do not broad git add).
2 changes: 2 additions & 0 deletions .cursor/rules/cursor-skills-git-workflow.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ Agent Kit treats this flow as the agents' **operational memory**: plan -> handof
|---------|-------|------------------------------|-----|
| `git staging` | `/git-staging` | `origin/staging` | Bring local changes to staging (working branch, commit, MR, merge). |
| `git prod` | `/git-prod` | `origin/main` | Promote approved staging to production. |
| `kit staging` | `/kit-staging` | `origin/staging` + optional landing staging | Git-staging wrap, then landing staging deploy only when a product changelog or release changed. |
| `kit prod` | `/kit-prod` | `origin/main` + optional landing promote | Git-prod wrap (same HITL), then landing promote only when this promotion includes a release. Native `/git-prod` does not put the site on the air. |

Legacy projects may name the pre-prod branch `homologacao`, `develop`, etc.; the **two-step pattern** stays the same and the canonical name is `staging`. See the decision in `.cursor/memory/decisions/` (branch naming).

Expand Down
Loading
Loading