You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make AGENTS.md the single instruction file; add Gemini pointer, drop Cursor/Windsurf duplication (closes#145) (#149)
AGENTS.md is Launchpad's one agent-instruction contract. Projections must never
duplicate it - they only add what a tool needs to read it.
- Gemini CLI: new opt-in `gemini` projection writes a minimal
.gemini/settings.json that sets context.fileName to AGENTS.md, so Gemini reads
the canonical file instead of a separate GEMINI.md. Adds a CONFIG file kind
for vendor config that points at canonical output.
- Cursor and Windsurf: removed their rule-file projections. Both read a root
AGENTS.md natively (Cursor as always-on rules; Windsurf/Cascade via the same
rules engine as .windsurf/rules), so the generated .cursor/rules and
.windsurf/rules files only duplicated the contract and could drift. Nothing is
emitted for them now. The Cursor MCP-client integration is untouched.
No engine change; projections remain auto-discovered AgentProjection beans.
Updates docs and changelog.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
### Added
10
+
-**Gemini CLI compatibility projection**: An opt-in `gemini``AgentProjection` points Gemini CLI at the canonical `AGENTS.md` instead of emitting a redundant context file. It writes a minimal `.gemini/settings.json` setting `context.fileName` to `AGENTS.md`, so Gemini reads the single source-of-truth contract with no duplicated content to drift out of sync. An existing hand-authored `.gemini/settings.json` is never clobbered. Adds a `CONFIG` file kind for vendor files that point at canonical output. Enable it via `projections: ["claude", "gemini"]` in the standards manifest or by ticking Gemini CLI in the TUI projection picker; no engine change was required (closes #145).
10
11
-**Anthropic (Claude) cloud preparation provider**: An opt-in, paid synthesis backend on the `PreparationProvider` SPI (`provider=anthropic`), shipped via the Spring AI Anthropic starter. It is explicit-selection only - `autoDetectable()` is `false`, so auto-detection never routes preparation to a paid API even when a key is present; local AI stays the default. Authentication is vendor-specific (`launchpad.ai.anthropic.api-key`, bound from `LAUNCHPAD_ANTHROPIC_API_KEY`, falling back to the shared key), with its own cloud base URL and `anthropic-version`. A missing key or an unreachable endpoint degrades cleanly to deterministic-only output instead of crashing. Adding it was a single new bean plus its config - no router or health-checker changes (toward #144).
11
12
-**Project readiness evaluator**: `ReadinessEvaluator.evaluate(Path)` returns a read-only `ReadinessResult` (status, structured reason lines, recommended action, last-prepared timestamp) derived from a project's prepared artifacts (`AGENTS.md` and the `.launchpad/*.json` sidecars) and its provenance stamp - the deterministic verdict the readiness dashboard renders. `ProvenanceHeader` gains a `parse(...)` inverse of `render()` (closes #122).
12
13
-**Output contract docs**: `docs/output-contract.adoc` documents every file a scan writes - layout, section structure, provenance stamp, write/merge actions, stable-vs-experimental tiers, and versioning - so downstream tools integrate against a contract instead of snapshot-testing prose. Adds a `docs/index.adoc` landing page (closes #91).
@@ -42,6 +43,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
42
43
-**Manifest now required for a pack**: A standards source resolves only with a `standards-pack.yml` declaring a supported `schemaVersion` (closes #84).
43
44
44
45
### Removed
46
+
-**Cursor and Windsurf rule-file projections**: Dropped the `cursor` (`.cursor/rules/*.mdc`) and `windsurf` (`.windsurf/rules/*.md`) projections. Both tools read a root `AGENTS.md` natively (Cursor applies it as always-on rules; Windsurf/Cascade discovers it through the same rules engine as `.windsurf/rules`), so those generated files only duplicated the canonical contract and could drift out of sync. `AGENTS.md` is the single agent-instruction file; nothing is emitted for Cursor or Windsurf. The Cursor MCP-client integration is unaffected.
45
47
-**Redundant Renderers**: Removed `BuildProfilesRenderer` and duplicate synthesis paths.
46
48
-**Legacy Artifacts**: Removed obsolete planning markers and redundant tests.
47
49
-**Legacy flat-file standards mode**: Dropped the manifest-less fallback that read bare `rules.yml` / `skills.yml` from the root of a standards source. Every pack is now a versioned manifest, so there is no second, unversioned load path (closes #84).
Copy file name to clipboardExpand all lines: docs/architecture.adoc
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,7 @@ This ordering is deliberate. Deterministic analysis is fast, repeatable, and doe
22
22
23
23
=== Vendor-neutral output
24
24
25
-
Generated context files use a standard shape (`AGENTS.md` + `.ai/`) that any AI assistant can read. Agent-specific formats (Claude Code skills, Cursor rules, Windsurf rules) are produced as optional projections on top of the canonical output, not as replacements for it.
25
+
Generated context files use a standard shape (`AGENTS.md` + `.ai/`) that any AI assistant can read. `AGENTS.md` is the single agent-instruction contract; projections never duplicate it. Tools that read `AGENTS.md` natively (Cursor, Windsurf) get no generated file at all. Optional projections add only what a tool needs on top of the canonical output -- Claude Code slash-command skills, or a `.gemini/settings.json` that points Gemini CLI at `AGENTS.md` -- never a replacement for it.
26
26
27
27
The standards companions (`.ai/engineering-rules.md`, `.ai/skills.md`, `.ai/checklists.md`) emit one stable-slug heading per rule, skill, and checklist -- each anchor derived from the record's stable id, not its title -- so downstream sandbox indexers chunk the corpus one item at a time. `AGENTS.md` itself stays standards-free.
Copy file name to clipboardExpand all lines: docs/standards-packs.adoc
+6-5Lines changed: 6 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,14 +71,15 @@ includes:
71
71
72
72
projections:
73
73
- claude
74
-
- cursor
74
+
- gemini
75
75
----
76
76
77
-
The `projections` field controls which agent-native formats are emitted alongside `AGENTS.md`:
77
+
The `projections` field controls which agent-native outputs are emitted alongside `AGENTS.md`. Projections never duplicate `AGENTS.md`; they only add what a tool needs to consume it:
78
78
79
79
* `claude` -- `.claude/skills/<id>/SKILL.md` for Claude Code slash-command discovery
80
-
* `cursor` -- `.cursor/rules/<id>.mdc`
81
-
* `windsurf` -- `.windsurfrules`
80
+
* `gemini` -- `.gemini/settings.json` that points Gemini CLI's `context.fileName` at `AGENTS.md`
81
+
82
+
Cursor and Windsurf are not listed: both read a root `AGENTS.md` natively, so no projection is needed for them.
82
83
83
84
Omit `projections` to use the default (`claude` only). Set it to `[]` to disable all projections.
84
85
@@ -305,7 +306,7 @@ When adding a new HTTP route or extending the API surface.
305
306
306
307
Anchor slugs must be unique: two ids that collapse to the same slug (e.g. `foo.bar` and `foo-bar`) are an authoring conflict and fail the scan, rather than being silently de-duplicated in the output.
307
308
308
-
Agent projections (`.claude/skills/`, `.cursor/rules/`, `.windsurf/`) are generated from the same source -- editing the YAML updates all outputs on the next scan.
309
+
Agent projections (`.claude/skills/`, `.gemini/settings.json`) are generated from the same source -- editing the YAML updates all outputs on the next scan.
0 commit comments