@jaybeeuu/agent-cortex 1.20.0 → 1.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/.agents/skills/style-versioning/SKILL.md +102 -0
  2. package/.changeset/README.md +8 -0
  3. package/.changeset/config.json +11 -0
  4. package/.github/workflows/ci.yml +227 -6
  5. package/AGENTS.md +29 -24
  6. package/CHANGELOG.md +119 -5
  7. package/README.md +132 -33
  8. package/agents/README.md +47 -13
  9. package/agents/plan/agent.md +51 -0
  10. package/agents/plan/claude/frontmatter.json +6 -0
  11. package/agents/plan/copilot/frontmatter.json +6 -0
  12. package/agents/plan/pi/frontmatter.json +6 -0
  13. package/agents/plan.agent.md +3 -0
  14. package/agents/ralph/agent.md +262 -0
  15. package/agents/ralph/claude/frontmatter.json +6 -0
  16. package/agents/ralph/claude/polling.md +31 -0
  17. package/agents/ralph/copilot/frontmatter.json +6 -0
  18. package/agents/ralph/copilot/polling.md +62 -0
  19. package/agents/ralph/pi/frontmatter.json +6 -0
  20. package/agents/ralph/pi/polling.md +74 -0
  21. package/agents/ralph-plan/agent.md +114 -0
  22. package/agents/ralph-plan/claude/frontmatter.json +6 -0
  23. package/agents/ralph-plan/copilot/frontmatter.json +6 -0
  24. package/agents/ralph-plan/pi/frontmatter.json +6 -0
  25. package/agents/ralph-plan.agent.md +5 -2
  26. package/agents/ralph.agent.md +83 -57
  27. package/agents/strategy/agent.md +104 -0
  28. package/agents/strategy/claude/frontmatter.json +6 -0
  29. package/agents/strategy/copilot/frontmatter.json +6 -0
  30. package/agents/strategy/pi/frontmatter.json +6 -0
  31. package/agents/strategy.agent.md +3 -0
  32. package/bin/agent-cortex.mjs +68 -1
  33. package/bin/installers/claude.mjs +262 -0
  34. package/bin/installers/copilot.mjs +129 -0
  35. package/bin/installers/pi.mjs +197 -0
  36. package/claude/.claude-plugin/plugin.json +1 -1
  37. package/claude/agents/plan.md +3 -1
  38. package/claude/agents/ralph-plan.md +5 -3
  39. package/claude/agents/strategy.md +3 -1
  40. package/claude/hooks/scripts/notify.mjs +54 -0
  41. package/claude/hooks.json +15 -0
  42. package/docs/claude-hooks.md +115 -0
  43. package/docs/ideas/unified-ci-pipeline.md +28 -0
  44. package/docs/skills/skill-anatomy.md +9 -0
  45. package/extensions/agent-modes/README.md +54 -0
  46. package/extensions/agent-modes/discover.test.ts +241 -0
  47. package/extensions/agent-modes/discover.ts +458 -0
  48. package/extensions/agent-modes/index.ts +13 -224
  49. package/extensions/agent-modes/node_modules/.bin/pi +21 -0
  50. package/extensions/agent-modes/node_modules/.bin/tsc +21 -0
  51. package/extensions/agent-modes/node_modules/.bin/tsserver +21 -0
  52. package/extensions/agent-modes/node_modules/.bin/tsx +21 -0
  53. package/extensions/agent-modes/package.json +20 -0
  54. package/extensions/agent-modes/tsconfig.json +12 -0
  55. package/extensions/session-start.ts +1 -1
  56. package/extensions/skill-stats/context-loader.test.ts +1 -1
  57. package/extensions/skill-stats/node_modules/.bin/pi +21 -0
  58. package/extensions/skill-stats/node_modules/.bin/tsc +21 -0
  59. package/extensions/skill-stats/node_modules/.bin/tsserver +21 -0
  60. package/extensions/skill-stats/node_modules/.bin/tsx +21 -0
  61. package/extensions/subagent/README.md +19 -0
  62. package/extensions/subagent/index.ts +131 -45
  63. package/extensions/subagent/node_modules/.bin/pi +21 -0
  64. package/extensions/subagent/node_modules/.bin/pi-ai +21 -0
  65. package/extensions/subagent/node_modules/.bin/tsc +21 -0
  66. package/extensions/subagent/node_modules/.bin/tsserver +21 -0
  67. package/extensions/subagent/node_modules/.bin/tsx +21 -0
  68. package/extensions/subagent/package.json +23 -0
  69. package/extensions/subagent/tsconfig.json +12 -0
  70. package/extensions/subagent/wait.test.ts +202 -0
  71. package/extensions/subagent/wait.ts +118 -0
  72. package/hooks/claude/hooks.json +38 -0
  73. package/hooks/claude/scripts/notify.mjs +54 -0
  74. package/lib/cli.mjs +62 -3
  75. package/package.json +10 -7
  76. package/plugin.json +1 -1
  77. package/pnpm-workspace.yaml +1 -0
  78. package/scripts/build-copilot-agents.mjs +30 -0
  79. package/scripts/lib/compose-agent.mjs +241 -0
  80. package/scripts/sync-plugin-version.sh +17 -0
  81. package/skills/engineering/design-an-interface/SKILL.md +1 -1
  82. package/skills/engineering/improve-codebase-architecture/SKILL.md +1 -1
  83. package/skills/workflow/ralph/REFERENCE.md +2 -2
  84. package/skills/workflow/ralph/SKILL.md +6 -6
  85. package/skills/workflow/run-pipeline-stage/scripts/generate-progress.ts +4 -2
  86. package/skills/workflow/using-agent-skills/SKILL.md +15 -2
  87. package/test/cli.test.mjs +115 -2
  88. package/test/copilot-installer.test.mjs +298 -0
  89. package/test/installer.test.mjs +179 -0
  90. package/test/notify-hook.test.mjs +63 -0
  91. package/test/pi-installer.test.mjs +371 -0
  92. package/token-map.README.md +128 -0
  93. package/token-map.json +106 -0
  94. package/.beads/README.md +0 -81
  95. package/.beads/config.yaml +0 -1
  96. package/.beads/issues.jsonl +0 -236
  97. package/.beads/metadata.json +0 -7
  98. package/.github/workflows/ci.test.ts +0 -217
  99. package/.github/workflows/publish.yml +0 -36
  100. package/scripts/build-claude-agents.mjs +0 -179
  101. package/skills/workflow/using-agent-skills/scripts/validate-skill-structure.test.ts +0 -73
  102. /package/extensions/{context-loader.md → lib/context-loader.md} +0 -0
  103. /package/extensions/{context-loader.ts → lib/context-loader.ts} +0 -0
@@ -0,0 +1,128 @@
1
+ # token-map.json — multi-harness token substitution
2
+
3
+ `token-map.json` is the central, single-source mapping of **tool names**, **paths**, and
4
+ **agent naming conventions** across the three harnesses this repo ships to. It is the
5
+ foundation for the install-time generation system: each harness installer (`agent-cortex
6
+ install <harness>`) reads the map and substitutes `{{TOOL:...}}` / `{{PATH:...}}` tokens in
7
+ the files it generates.
8
+
9
+ **The substitution contract lives inside `token-map.json`** (the `contract` section) — that
10
+ file is the single reference installers must implement. This README explains the design
11
+ decisions behind the map.
12
+
13
+ ## Harnesses
14
+
15
+ | id | Platform | Agent format | Plugin root |
16
+ |---|---|---|---|
17
+ | `copilot` | GitHub Copilot CLI | `agents/<name>/` composable dirs → generated `agents/*.agent.md` | `~/.copilot/installed-plugins/_direct/agent-cortex` |
18
+ | `pi` | pi coding agent | `agents/<name>/` composable dirs (composed at runtime by agent-modes, or installed install-time by `agent-cortex install pi`) | `~/.pi/agent/npm/node_modules/@jaybeeuu/agent-cortex` |
19
+ | `claude` | Claude Code | `claude/agents/*.md` (generated) | `${CLAUDE_PLUGIN_ROOT}` (env var) |
20
+
21
+ The harness ids match the values accepted by `agent-cortex install <harness>` in
22
+ `lib/cli.mjs` (`SUPPORTED_HARNESSES`). The pi `plugin_root` row is the npm-layout
23
+ literal that `agent-cortex install pi` uses by default; local checkout and symlinked
24
+ installs pass `--plugin-root <dir>` to override it (see README "Pi harness agents &
25
+ skills").
26
+
27
+ ## Design decisions
28
+
29
+ ### 1. Token naming convention: `{{TOOL:name}}`, not `{{tool.name}}`
30
+
31
+ `agents/README.md` (ADR #63) already standardised `{{TOOL:name}}`, `{{PATH:name}}`, and
32
+ `{{SECTION:name}}` for the composable agent directory format. The map adopts that grammar
33
+ rather than inventing a dotted form:
34
+
35
+ - **The convention is established** — skill authors and the ADR already write tokens this
36
+ way; the map should not fork the language.
37
+ - **Upper-case type prefix disambiguates** — `{{TOOL:read}}` (a tool) can never collide with
38
+ `{{PATH:read}}` (a path) in the same document.
39
+ - **One namespace per type** — tool keys, path keys, and section names never share a lookup
40
+ table, so a tool called `skills_dir` would not shadow the path key.
41
+ - **Greppable and schema-friendly** — simple `{{TYPE:NAME}}` is trivially matched by a
42
+ regex; delimiters make unbalanced/typo'd tokens visible.
43
+
44
+ ### 2. What is mapped
45
+
46
+ - **`tools`** — the twelve canonical tool names as authored in `agents/<name>/agent.md`
47
+ (copilot names are the authoring names). Each row gives the equivalent tool name per
48
+ harness. Source of truth for the copilot → claude half is `token-map.json`'s own claude
49
+ column, consumed by `bin/installers/claude.mjs` (the install-time generator — PR #91, #92); the pi column is grounded
50
+ in pi's documented built-in tool surface (`read`, `bash`, `edit`, `write`, `grep`, `find`,
51
+ `ls`) plus `task` / `read_agent` / `wait_for_agents` subagent tools.
52
+ - **`paths`** — `plugin_root`, `agents_dir`, and `skills_dir`. These are the install-time
53
+ variables that differ per harness. `plugin_root` is the anchor; the other two resolve
54
+ relative to it (`{base, relative}` specs) so a harness only overrides the single root it
55
+ actually installs into.
56
+ - **`agents`** — the `agent-cortex:` name-prefix convention per harness (claude strips the
57
+ prefix during conversion) and the deferred-agent exception (claude's `ralph` is authored
58
+ natively, never generated). Agent names themselves do not get per-row mappings because
59
+ the prefix rule covers all of them; the deferred list captures the only structural
60
+ difference.
61
+ - **Deliberately not mapped:** hook patterns, MCP servers, and tool descriptions. Those
62
+ differ *structurally* per harness (different hook event names, different config files),
63
+ not by a single substitutable token; each installer already hardcodes its own shape. The
64
+ map records them in `notes` where a tool differs in behaviour (`read_agent`, `skill`,
65
+ `ask_user`).
66
+
67
+ ### 3. Null mappings
68
+
69
+ A null value means **"this harness has no equivalent"** — not "empty string" and not "leave
70
+ the token as-is". The contract defines the two contexts:
71
+
72
+ - **Prose** (e.g. `Use {{TOOL:read_agent}} to poll`): the token is dropped and the
73
+ installer warns. Dangling sentences after a drop are the author's responsibility — the
74
+ warning exists so the installer surfaces them.
75
+ - **Tool-list frontmatter** (e.g. `tools: [..., "read_agent"]`): the entry is omitted from
76
+ the array.
77
+
78
+ Unknown (unmapped) tokens are a **hard error**, not a null — a silently-passed-through
79
+ token is exactly the bug the map exists to prevent, and mirrors the build script's
80
+ `unknown tool "x"` throw.
81
+
82
+ The pi install-time installer (`bin/installers/pi.mjs`) follows the strict contract above.
83
+ One consumer deviates deliberately: the pi `agent-modes` extension reads the map at
84
+ **runtime** (not install time) to compose agent prompts from the composable agents
85
+ format. For it, an unmapped tool name passes through unchanged — it may be a
86
+ native PI tool — while a mapped-null tool (`ask_user`, `skill`) is omitted with a
87
+ warning. See `extensions/agent-modes/README.md`.
88
+
89
+ ### 4. Token substitution contract
90
+
91
+ The full contract is embedded in `token-map.json` under `contract`. In summary, installers:
92
+
93
+ 1. Bind a harness id (`copilot` | `claude` | `pi`).
94
+ 2. Substitute in order: `SECTION` (left for the composer), then `TOOL`, then `PATH`.
95
+ 3. For `TOOL`: look up the canonical key, replace with the harness name; null → drop/omit;
96
+ unknown → throw.
97
+ 4. For `PATH`: named key → resolve from `paths`; anything else → resolve relative to
98
+ `plugin_root`; `${ENV_VAR}` values pass through verbatim for runtime expansion.
99
+ 5. Reject a map `version` they do not implement.
100
+
101
+ ## Authoring guidance
102
+
103
+ - Write tokens with the **canonical (copilot) names**: `Use {{TOOL:task}} to spawn
104
+ subagents`, `Read {{PATH:skills/workflow/plan/SKILL.md}}`.
105
+ - Never embed a harness-specific name in the canonical sources (`agents/<name>/agent.md`,
106
+ `skills/**/SKILL.md`) — that defeats the map. The generated `claude/` subtree, the
107
+ generated `agents/*.agent.md` files, and any installed copies are the only places
108
+ substituted names appear.
109
+ - When you add a new tool to an agent's frontmatter, add a row to `tools` in
110
+ `token-map.json` in the same change — the contract treats unknown tools as errors, so a
111
+ missing row breaks the install pipeline loudly instead of silently.
112
+
113
+ ## Related
114
+
115
+ - `agents/README.md` — composable agent directory format (ADR #63), defines the token
116
+ grammar the map implements.
117
+ - `scripts/build-copilot-agents.mjs` / `bin/installers/copilot.mjs` — the copilot
118
+ harness token composer (scripts/lib/compose-agent.mjs) resolves `{{TOOL:...}}` /
119
+ `{{PATH:...}}` against the map and `{{SECTION:...}}` from the per-harness section
120
+ files; `bin/installers/copilot.mjs` is the shared generator both `pnpm build:copilot`
121
+ and `agent-cortex install copilot` run.
122
+ - `bin/installers/claude.mjs` — the single Claude generator, behind both
123
+ `agent-cortex install claude` and the `pnpm build:claude` alias (no build-time
124
+ counterpart; the committed `claude/` subtree is regenerated by it and drift-checked).
125
+ - `bin/installers/pi.mjs` — the pi harness installer (`agent-cortex install pi`), an
126
+ install-time consumer of the map's contract.
127
+ - `lib/cli.mjs` — `SUPPORTED_HARNESSES`, the install command surface the harness ids come
128
+ from.
package/token-map.json ADDED
@@ -0,0 +1,106 @@
1
+ {
2
+ "name": "agent-cortex token map",
3
+ "description": "Central mapping of tool names, paths, and agent naming conventions across the copilot, claude, and pi harnesses. Single source of truth for install-time token substitution. See token-map.README.md for the design rationale.",
4
+ "version": 1,
5
+ "harnesses": ["copilot", "claude", "pi"],
6
+ "token_format": {
7
+ "convention": "{{TYPE:NAME}}",
8
+ "decision": "Adopt the {{TOOL:name}} / {{PATH:name}} / {{SECTION:name}} grammar already standardised by ADR #63 (agents/README.md) rather than a dotted {{tool.name}} form. The uppercase type prefix disambiguates token kinds at a glance, keeps tool/path/section names in one namespace collision-free, and matches the token grammar skills are already written against.",
9
+ "types": {
10
+ "TOOL": "{{TOOL:<canonical tool key>}} — replaced at install time with the bound harness's tool name (see tools).",
11
+ "PATH": "{{PATH:<path key or relative path>}} — replaced at install time with the harness-resolved path (see paths).",
12
+ "SECTION": "{{SECTION:<name>}} — replaced by the agent composer with <harness>/<name>.md section content. Not a global substitution; out of scope for token-map.json (see contract)."
13
+ }
14
+ },
15
+ "tools": {
16
+ "bash": { "copilot": "bash", "claude": "Bash", "pi": "bash" },
17
+ "view": { "copilot": "view", "claude": "Read", "pi": "read" },
18
+ "edit": { "copilot": "edit", "claude": "Edit", "pi": "edit" },
19
+ "create": { "copilot": "create", "claude": "Write", "pi": "write" },
20
+ "grep": { "copilot": "grep", "claude": "Grep", "pi": "grep" },
21
+ "rg": { "copilot": "rg", "claude": "Grep", "pi": "grep" },
22
+ "glob": { "copilot": "glob", "claude": "Glob", "pi": "find" },
23
+ "ask_user": { "copilot": "ask_user", "claude": "AskUserQuestion", "pi": null },
24
+ "web_fetch": { "copilot": "web_fetch", "claude": "WebFetch", "pi": "fetch_content" },
25
+ "skill": { "copilot": "skill", "claude": "Skill", "pi": null },
26
+ "task": { "copilot": "task", "claude": "Task", "pi": "task" },
27
+ "read_agent": { "copilot": "read_agent", "claude": null, "pi": "read_agent" },
28
+ "wait_for_agents": { "copilot": null, "claude": null, "pi": "wait_for_agents" }
29
+ },
30
+ "paths": {
31
+ "plugin_root": {
32
+ "copilot": "~/.copilot/installed-plugins/_direct/agent-cortex",
33
+ "claude": "${CLAUDE_PLUGIN_ROOT}",
34
+ "pi": "~/.pi/agent/npm/node_modules/@jaybeeuu/agent-cortex"
35
+ },
36
+ "agents_dir": {
37
+ "copilot": { "base": "plugin_root", "relative": "agents" },
38
+ "claude": { "base": "plugin_root", "relative": "agents" },
39
+ "pi": { "base": "plugin_root", "relative": "agents" }
40
+ },
41
+ "skills_dir": {
42
+ "copilot": { "base": "plugin_root", "relative": "skills" },
43
+ "claude": { "base": "plugin_root", "relative": "skills" },
44
+ "pi": { "base": "plugin_root", "relative": "skills" }
45
+ }
46
+ },
47
+ "agents": {
48
+ "prefix": {
49
+ "copilot": "agent-cortex:",
50
+ "claude": "",
51
+ "pi": "agent-cortex:"
52
+ },
53
+ "deferred": {
54
+ "ralph": ["claude"]
55
+ },
56
+ "sources": {
57
+ "copilot": "agents/<name>/ composable dirs (canonical) — composed to agents/*.agent.md by scripts/build-copilot-agents.mjs",
58
+ "pi": "agents/<name>/ composable dirs (canonical) — composed at runtime by the agent-modes extension",
59
+ "claude": "agents/<name>/ composable dirs (canonical) — composed by bin/installers/claude.mjs (install-time generator; pnpm build:claude aliases it), plus agents-native/*.md for deferred agents"
60
+ }
61
+ },
62
+ "notes": {
63
+ "tools": {
64
+ "rg": "Copilot alias for grep. Claude and pi collapse it onto their single search tool (Grep / grep) — same collapse rule as the build script.",
65
+ "glob": "Claude has a dedicated Glob tool. pi's built-in pattern-search tool is find (hypa_find when the pi-hypa extension is installed).",
66
+ "ask_user": "Copilot (ask_user) and Claude (AskUserQuestion) prompt the user mid-run. pi intentionally ships no permission-popup/ask tool (per pi docs 'it intentionally does not include permission popups'), so the mapping is null.",
67
+ "web_fetch": "pi's fetch_content comes from the pi-web-access package (declared in pi/settings.json).",
68
+ "skill": "Copilot (skill) and Claude (Skill) expose skills as a tool. pi discovers skills but the agent loads them via read and /skill:<name> commands — there is no dedicated tool, so the mapping is null.",
69
+ "read_agent": "Claude's Task returns results inline — there is no separate read step, so read_agent drops on claude (null). Copilot uses the task + read_agent poll loop; pi blocks on wait_for_agents and keeps read_agent as a fallback.",
70
+ "wait_for_agents": "PI-only blocking wait over background subagent runs (the task tool): returns the results of completed agents and STILL RUNNING for the rest. Copilot has no equivalent tool (its task + read_agent poll loop stays) and Claude's Task delivers results inline with no wait step — both null."
71
+ },
72
+ "paths": {
73
+ "pi": "plugin_root defaults to the npm-package install layout (~/.pi/agent/npm/node_modules/@jaybeeuu/agent-cortex). Local-checkout installs (pi/settings.json packages entry referencing a local src path) or symlinked installs differ — installers must compute plugin_root from the actual resolution and can override it."
74
+ },
75
+ "agents": {
76
+ "prefix": "Claude strips the agent-cortex: name prefix during conversion (NAME_PREFIX in bin/installers/claude.mjs): copilot/pi agents are agent-cortex:<slug>, claude agents are <slug>.",
77
+ "deferred": "ralph has no generated claude counterpart — it is authored natively as agents-native/ralph.md (its event-driven orchestration cannot be produced by section composition from the polling copilot source)."
78
+ }
79
+ },
80
+ "contract": {
81
+ "version": 1,
82
+ "summary": "Installers substitute {{TOOL:...}}, {{PATH:...}}, and {{SECTION:...}} tokens in generated harness files using this map. This contract is the single reference installers must implement; token-map.json is the data those rules operate on.",
83
+ "harness_ids": ["copilot", "claude", "pi"],
84
+ "binding": "The harness id is the same value the installer is invoked with (agent-cortex install <harness>). Each harness reads its own column from the tools, paths, and agents sections.",
85
+ "substitution_order": ["SECTION", "TOOL", "PATH"],
86
+ "rules": [
87
+ "TOOL: replace {{TOOL:<key>}} with tools.<key>.<harness>. Canonical keys are exact, case-sensitive strings (the copilot tool names, which are the authoring names in agents/<name>/agent.md).",
88
+ "TOOL null: a null value means the harness has no equivalent. In prose, remove the token (and emit a warning). In a tool-list context (frontmatter tools: [...]), omit the entry. Do not substitute an empty string.",
89
+ "TOOL unknown: a {{TOOL:<key>}} with no entry in tools is a hard error — the map must be extended. This mirrors the generators (scripts/build-copilot-agents.mjs, bin/installers/claude.mjs), which throw on unknown tools.",
90
+ "PATH named key: replace {{PATH:<key>}} with the resolved value of paths.<key>.<harness>.",
91
+ "PATH relative: replace {{PATH:<relative>}} with plugin_root + '/' + <relative> (e.g. {{PATH:skills/workflow/plan/SKILL.md}}).",
92
+ "PATH resolution: a value may be a literal string, an ${ENV_VAR} token, or a {base, relative} spec. Resolve {base, relative} by joining relative onto the resolved base. Leave ${ENV_VAR} values verbatim — the harness expands them at runtime (claude's ${CLAUDE_PLUGIN_ROOT}).",
93
+ "PATH unknown base: a {base, relative} spec whose base is not a key in paths is a hard error.",
94
+ "SECTION: {{SECTION:<name>}} is resolved by the agent composer from <agents_dir>/<harness>/<name>.md; token-map.json does not substitute it. Installers must leave SECTION tokens untouched for the composer.",
95
+ "Contract version: installers must reject token-map.json versions higher than the contract version they implement.",
96
+ "Case sensitivity: all token arguments and map keys are case-sensitive."
97
+ ],
98
+ "error_handling": {
99
+ "unknown_tool": "throw — the map must stay complete",
100
+ "unknown_path_base": "throw — the map must stay complete",
101
+ "null_tool_in_prose": "warn and drop the token",
102
+ "null_tool_in_tool_list": "omit the entry from the array",
103
+ "unsupported_version": "throw with the supported version range"
104
+ }
105
+ }
106
+ }
package/.beads/README.md DELETED
@@ -1,81 +0,0 @@
1
- # Beads - AI-Native Issue Tracking
2
-
3
- Welcome to Beads! This repository uses **Beads** for issue tracking - a modern, AI-native tool designed to live directly in your codebase alongside your code.
4
-
5
- ## What is Beads?
6
-
7
- Beads is issue tracking that lives in your repo, making it perfect for AI coding agents and developers who want their issues close to their code. No web UI required - everything works through the CLI and integrates seamlessly with git.
8
-
9
- **Learn more:** [github.com/steveyegge/beads](https://github.com/steveyegge/beads)
10
-
11
- ## Quick Start
12
-
13
- ### Essential Commands
14
-
15
- ```bash
16
- # Create new issues
17
- bd create "Add user authentication"
18
-
19
- # View all issues
20
- bd list
21
-
22
- # View issue details
23
- bd show <issue-id>
24
-
25
- # Update issue status
26
- bd update <issue-id> --claim
27
- bd update <issue-id> --status done
28
-
29
- # Sync with Dolt remote
30
- bd dolt push
31
- ```
32
-
33
- ### Working with Issues
34
-
35
- Issues in Beads are:
36
- - **Git-native**: Stored in Dolt database with version control and branching
37
- - **AI-friendly**: CLI-first design works perfectly with AI coding agents
38
- - **Branch-aware**: Issues can follow your branch workflow
39
- - **Always in sync**: Auto-syncs with your commits
40
-
41
- ## Why Beads?
42
-
43
- ✨ **AI-Native Design**
44
- - Built specifically for AI-assisted development workflows
45
- - CLI-first interface works seamlessly with AI coding agents
46
- - No context switching to web UIs
47
-
48
- 🚀 **Developer Focused**
49
- - Issues live in your repo, right next to your code
50
- - Works offline, syncs when you push
51
- - Fast, lightweight, and stays out of your way
52
-
53
- 🔧 **Git Integration**
54
- - Automatic sync with git commits
55
- - Branch-aware issue tracking
56
- - Dolt-native three-way merge resolution
57
-
58
- ## Get Started with Beads
59
-
60
- Try Beads in your own projects:
61
-
62
- ```bash
63
- # Install Beads
64
- curl -sSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash
65
-
66
- # Initialize in your repo
67
- bd init
68
-
69
- # Create your first issue
70
- bd create "Try out Beads"
71
- ```
72
-
73
- ## Learn More
74
-
75
- - **Documentation**: [github.com/steveyegge/beads/docs](https://github.com/steveyegge/beads/tree/main/docs)
76
- - **Quick Start Guide**: Run `bd quickstart`
77
- - **Examples**: [github.com/steveyegge/beads/examples](https://github.com/steveyegge/beads/tree/main/examples)
78
-
79
- ---
80
-
81
- *Beads: Issue tracking that moves at the speed of thought* ⚡
@@ -1 +0,0 @@
1
- no-git-ops: true