|
2 | 2 |
|
3 | 3 | This bundled extension manages the **coding agent context/instruction file** (e.g. `CLAUDE.md`, `.github/copilot-instructions.md`, `AGENTS.md`, `GEMINI.md`, …) for the active integration. |
4 | 4 |
|
5 | | -It owns the lifecycle of the managed section delimited by the configurable start/end markers (defaults: `<!-- SPECKIT START -->` / `<!-- SPECKIT END -->`). |
| 5 | +It owns the lifecycle of the managed section delimited by the configurable start/end markers (defaults: `<!-- SPECKIT START -->` / `<!-- SPECKIT END -->`). For `.mdc` files, it also ensures the YAML frontmatter (the metadata block at the top of the file) contains `alwaysApply: true`. Otherwise, everything outside the managed section is untouched. |
| 6 | + |
| 7 | +> NOTE: Spec Kit itself never touches your agent context file. This extension is the only thing that does, and it's opt-in: install it if you want the block kept in sync, skip it if you'd rather manage that file yourself. |
6 | 8 |
|
7 | 9 | ## Why an extension? |
8 | 10 |
|
9 | 11 | Not every Spec Kit user wants Spec Kit to write into the coding agent's context file. Keeping this behavior in a dedicated, **opt-in** extension lets users: |
10 | 12 |
|
11 | | -- **Choose whether to install it at all** — `specify init` does not install it. Add it explicitly when you want Spec Kit to manage the agent context file; if it is absent or disabled, Spec Kit never creates or modifies that file. |
12 | | -- **Customize the markers** by editing `.specify/extensions/agent-context/agent-context-config.yml` — the bundled scripts honor the `context_markers` value. |
| 13 | +- **Choose whether to install it at all** - `specify init` does **not** install it. Add it explicitly when you want Spec Kit to manage the agent context file; when it is absent, the file is never modified, and when it is disabled, its automatic hooks do not run. |
| 14 | +- **Customize the markers** by editing `.specify/extensions/agent-context/agent-context-config.yml` ([agent-context-config.yml](./agent-context-config.yml) in this repo) - the bundled scripts honor the `context_markers` value. |
13 | 15 | - **Synchronize multiple agent anchors** by setting `context_files` when a project intentionally uses more than one coding agent context file, such as `AGENTS.md` and `CLAUDE.md`. |
14 | | -- **Refresh on demand** by running the `speckit.agent-context.update` command in your agent, or automatically through the hooks declared in `extension.yml` (`after_specify`, `after_plan`). Invoke it using your agent's slash-command separator — `/speckit.agent-context.update` for dot-separator agents or `/speckit-agent-context-update` for hyphen-separator agents (e.g. Forge, Cline). |
| 16 | +- **Refresh on demand** by running the `speckit.agent-context.update` command in your agent, or automatically through the hooks declared in [extension.yml](./extension.yml) (`after_specify`, `after_plan`). |
15 | 17 |
|
16 | | -## Commands |
| 18 | +## Installation |
17 | 19 |
|
18 | | -The command ID below is canonical. When invoking it as a slash command, use your agent's separator: `/speckit.agent-context.update` for dot-separator agents or `/speckit-agent-context-update` for hyphen-separator agents (e.g. Forge, Cline). |
| 20 | +To install the extension, from the root of an initialized Spec Kit project, run: |
19 | 21 |
|
20 | | -| Command | Description | |
21 | | -|---------|-------------| |
22 | | -| `speckit.agent-context.update` | Refresh the managed section in the agent context file with the current plan path. | |
| 22 | +```bash |
| 23 | +specify extension add agent-context |
| 24 | +``` |
23 | 25 |
|
24 | | -## Configuration |
| 26 | +## Disabling |
25 | 27 |
|
26 | | -All configuration flows through the extension's own config file at |
27 | | -`.specify/extensions/agent-context/agent-context-config.yml`: |
| 28 | +```bash |
| 29 | +specify extension disable agent-context |
28 | 30 |
|
29 | | -```yaml |
30 | | -# Path to the coding agent context file managed by this extension |
31 | | -context_file: CLAUDE.md |
| 31 | +# Re-enable it |
| 32 | +specify extension enable agent-context |
| 33 | +``` |
32 | 34 |
|
33 | | -# Optional list of coding agent context files to manage together. |
34 | | -# When non-empty, this takes precedence over context_file. |
35 | | -context_files: |
36 | | - - AGENTS.md |
37 | | - - CLAUDE.md |
| 35 | +While this extension is disabled (or not installed), nothing in Spec Kit creates, updates, or removes the managed block - the `__CONTEXT_FILE__` placeholder in any template is left as-is, and the extension's own config is never read. |
38 | 36 |
|
39 | | -# Delimiters for the managed Spec Kit section |
40 | | -context_markers: |
41 | | - start: "<!-- SPECKIT START -->" |
42 | | - end: "<!-- SPECKIT END -->" |
43 | | -``` |
| 37 | +## Commands |
| 38 | + |
| 39 | +| Command | Description | |
| 40 | +| ------------------------------ | --------------------------------------------------------------------------------- | |
| 41 | +| `speckit.agent-context.update` | Refresh the managed section in the agent context file with the current plan path. | |
| 42 | + |
| 43 | +> NOTE: The command ID above is canonical. Invoke it using the syntax for your integration: `/speckit.agent-context.update` for dot-command integrations; `/speckit-agent-context-update` for hyphen/skills integrations (including Forge and Cline); `$speckit-agent-context-update` for Codex or ZCode in skills mode; or `/skill:speckit-agent-context-update` for Kimi. |
| 44 | +
|
| 45 | +## Configuration |
44 | 46 |
|
45 | | -- `context_file` — the project-relative path to the coding agent context file. When empty, the bundled update scripts self-seed it by looking up the active integration's key in this extension's own `agent-context-defaults.json` map. The Specify CLI is never consulted. |
46 | | -- `context_files` — optional project-relative paths to multiple coding agent context files. When non-empty, the list takes precedence over `context_file`. Absolute paths, backslash separators, and `..` path segments are rejected. |
47 | | -- `context_markers.start` / `.end` — the delimiters around the managed section. Edit these to use custom markers. |
| 47 | +All configuration flows through the extension's own config file at `.specify/extensions/agent-context/agent-context-config.yml` ([agent-context-config.yml](./agent-context-config.yml) in the repo). |
48 | 48 |
|
49 | 49 | ## Requirements |
50 | 50 |
|
51 | 51 | The bundled update scripts require **Python 3** with **PyYAML** for YAML/upsert processing (PowerShell can also use `ConvertFrom-Yaml` when available). |
52 | 52 |
|
53 | | -PyYAML ships with the `specify` CLI and is normally available via the same `python3` interpreter. If a hook reports *"PyYAML is required … not available in the current Python environment"*, it means the system `python3` differs from the one used to install Spec Kit. To resolve, run: |
| 53 | +PyYAML ships with the `specify` CLI and is normally available via the same `python3` interpreter. If a hook reports _"PyYAML is required … not available in the current Python environment"_, it means the system `python3` differs from the one used to install Spec Kit. To resolve, run: |
54 | 54 |
|
55 | 55 | ```bash |
56 | 56 | pip install pyyaml |
57 | 57 | # or target the specific interpreter Spec Kit uses: |
58 | 58 | /path/to/speckit-python -m pip install pyyaml |
59 | 59 | ``` |
60 | 60 |
|
61 | | -## Disable |
62 | | - |
63 | | -```bash |
64 | | -specify extension disable agent-context |
65 | | -``` |
| 61 | +## Issues |
66 | 62 |
|
67 | | -When disabled (or never installed), Spec Kit performs no agent context file creation, updates, or removal — the extension's bundled scripts are the only code that ever touches the managed section. The Specify CLI carries no agent-context state at all: it never reads this config, never resolves a context file, and the `__CONTEXT_FILE__` placeholder (if present in any template) is left untouched. All context-file knowledge — including the per-agent default mapping in `agent-context-defaults.json` — lives entirely within this extension, so disabling it is a complete opt-out. |
| 63 | +For any other issues, please create an issue in the [official GitHub repo](https://github.com/github/spec-kit/issues). |
0 commit comments