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
17 changes: 17 additions & 0 deletions .beads/issues.jsonl

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .beads/last-touched
Original file line number Diff line number Diff line change
@@ -1 +1 @@
ade-11.3.15
ade-12.3.12
6 changes: 6 additions & 0 deletions .github/agents/ade.agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,19 @@ tools:
- search
- agent
- workflows/*
- knowledge/*
- agentskills/*
mcp-servers:
workflows:
type: stdio
command: "npx"
args: ["@codemcp/workflows-server@latest"]
tools: ["*"]
knowledge:
type: stdio
command: "npx"
args: ["-y", "@codemcp/knowledge-server"]
tools: ["*"]
agentskills:
type: stdio
command: "npx"
Expand Down
16 changes: 15 additions & 1 deletion .kiro/agents/ade.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,26 @@
"get_tool_info"
]
},
"knowledge": {
"command": "npx",
"args": ["-y", "@codemcp/knowledge-server"],
"autoApprove": ["*"]
},
"agentskills": {
"command": "npx",
"args": ["-y", "@codemcp/skills-server"],
"autoApprove": ["*"]
}
},
"tools": ["read", "write", "shell", "spec", "@workflows/*", "@agentskills/*"],
"tools": [
"read",
"write",
"shell",
"spec",
"@workflows/*",
"@knowledge/*",
"@agentskills/*"
],
"allowedTools": [
"read",
"write",
Expand All @@ -29,6 +42,7 @@
"@workflows/conduct_review",
"@workflows/list_workflows",
"@workflows/get_tool_info",
"@knowledge/*",
"@agentskills/*"
],
"useLegacyMcpJson": true
Expand Down
5 changes: 5 additions & 0 deletions .kiro/settings/mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@
"command": "npx",
"args": ["-y", "@codemcp/skills-server"],
"autoApprove": ["*"]
},
"knowledge": {
"command": "npx",
"args": ["-y", "@codemcp/knowledge-server"],
"autoApprove": ["*"]
}
}
}
1 change: 1 addition & 0 deletions .opencode/agents/ade.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ permission:
workflows_conduct_review: "allow"
workflows_list_workflows: "allow"
workflows_get_tool_info: "allow"
"knowledge*": "allow"
"agentskills*": "allow"
read:
"*": "allow"
Expand Down
29 changes: 29 additions & 0 deletions .vibe/beads-state-ade-separate-harness-config-85eqmf.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"conversationId": "ade-separate-harness-config-85eqmf",
"projectPath": "/Users/oliverjaegle/projects/privat/codemcp/ade",
"epicId": "ade-12",
"phaseTasks": [
{
"phaseId": "explore",
"phaseName": "Explore",
"taskId": "ade-12.1"
},
{
"phaseId": "plan",
"phaseName": "Plan",
"taskId": "ade-12.2"
},
{
"phaseId": "code",
"phaseName": "Code",
"taskId": "ade-12.3"
},
{
"phaseId": "commit",
"phaseName": "Commit",
"taskId": "ade-12.4"
}
],
"createdAt": "2026-03-26T06:03:17.733Z",
"updatedAt": "2026-03-26T06:03:17.733Z"
}
105 changes: 105 additions & 0 deletions .vibe/development-plan-separate-harness-config.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
# Development Plan: ade (separate-harness-config branch)

*Generated on 2026-03-26 by Vibe Feature MCP*
*Workflow: [epcc](https://mrsimpson.github.io/responsible-vibe-mcp/workflows/epcc)*

## Goal
Separate the generated configuration into two distinct concerns:
1. **Development choices** — processes, architecture, practices (stable, project-level config)
2. **Harness config** — autonomy settings (mutable independently, e.g. more/less autonomous)

## Explore
<!-- beads-phase-id: ade-12.1 -->
### Tasks

*Tasks managed via `bd` CLI*

## Plan
<!-- beads-phase-id: ade-12.2 -->
### Phase Entrance Criteria:
- [ ] The current structure of generated config files is understood
- [ ] It's clear which parts belong to "development choices" vs "harness config"
- [ ] Use cases for changing harness config independently are documented
- [ ] Scope and out-of-scope items are defined

### Tasks

*Tasks managed via `bd` CLI*

## Code
<!-- beads-phase-id: ade-12.3 -->
### Phase Entrance Criteria:
- [ ] A clear design/approach has been chosen and documented
- [ ] The target file structure is defined (e.g. separate files, dedicated sections)
- [ ] Impact on existing functionality is assessed

### Tasks

*Tasks managed via `bd` CLI*

## Commit
<!-- beads-phase-id: ade-12.4 -->
### Phase Entrance Criteria:
- [ ] All code changes are implemented and tested
- [ ] The separation of concerns works correctly end-to-end
- [ ] No regressions introduced

### Tasks
- [ ] Squash WIP commits: `git reset --soft <first commit of this branch>`. Then, create a conventional commit. In the message, first summarize the intentions and key decisions from the development plan. Then, add a brief summary of the key changes and their side effects and dependencies

*Tasks managed via `bd` CLI*

## Key Decisions

### Decision: setup wizard only covers dev choices; configure covers everything agent-related
- **`ade setup`** prompts only for: process, architecture, practices, backpressure (pure dev choices). After resolving, writes config.yaml + config.lock.yaml. Then offers: *"Would you like to configure your coding agent now?"* — if yes, delegates to `runConfigure`.
- **`ade configure`** handles: autonomy profile, harness selection, skills installation, knowledge source init. All ephemeral — nothing written to config.yaml/lock.
- **Rationale**: Harness selection, autonomy, skills install, knowledge init are all agent/environment concerns, not team-level dev choices.

## Notes

### Codebase Exploration Findings

#### Current Config Flow
1. User runs `ade setup` → selects facets (process, practices, autonomy, etc.) + harnesses
2. Choices saved to `config.yaml` → resolved into `LogicalConfig` → saved in `config.lock.yaml`
3. `ade install` reads `config.lock.yaml` and runs each selected harness writer

#### Config Separation (current state in `config.yaml`)
```yaml
choices:
process: codemcp-workflows
practices: [adr-nygard, conventional-commits]
autonomy: sensible-defaults # ← THIS is the harness config concern
excluded_docsets: [...]
harnesses: [universal, opencode, copilot, kiro]
```

The `autonomy` facet is stored under `choices` alongside `process` and `practices`.
All choices go through the same `resolve()` pipeline → `LogicalConfig.permission_policy`.

#### Two Distinct Concerns
| Concern | Current location | Stability |
|---|---|---|
| Development choices (process, practices, architecture) | `config.yaml` → `choices` | Stable, project-level |
| Harness config (autonomy/permission policy) | `config.yaml` → `choices.autonomy` | Mutable, environment-level |

#### What gets written per harness
- **universal**: autonomy block goes into `AGENTS.md` alongside instructions
- **copilot**: autonomy maps to built-in tool list in `.github/agents/ade.agent.md` frontmatter
- **cursor**: autonomy goes into `.cursor/rules/ade.mdc` alongside instructions
- Other harnesses: similar mixing

#### The Problem
- Autonomy/harness config is locked into `config.lock.yaml` together with development choices
- Changing autonomy requires re-running `ade setup` (full wizard) or manually editing `config.yaml` + `config.lock.yaml`
- The `LockFile` type stores `logical_config` as one combined blob — no way to selectively re-resolve only the harness/autonomy part

#### Possible Approaches
1. **Separate config file** (e.g. `harness.yaml`) for autonomy + harness selection, independent of `config.yaml`
2. **Separate section in `config.yaml`** (e.g. `harness_config:` alongside `choices:`)
3. **Dedicated CLI command** `ade configure-autonomy` that only re-resolves and re-installs the permission policy
4. **Separate lock file** for harness-specific overrides

---
*This plan is maintained by the LLM and uses beads CLI for task management. Tool responses provide guidance on which bd commands to use for task management.*
12 changes: 9 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -205,9 +205,15 @@ reference knowledge.

### Coding agent agnostic setup tooling

ADE includes a CLI (`ade setup`) that generates the correct configuration for
whichever coding agent you use. All configuration is placed into your repo so
you can check it in.
ADE includes a CLI with two commands that cover distinct concerns:

- **`ade setup`** — define your team's development choices (process, architecture,
practices, backpressure). Writes `config.yaml` and `config.lock.yaml` into your
repo so the whole team works from the same foundation.

- **`ade configure`** — configure your coding agent (autonomy profile, target
harness, skills). This is developer/environment-level and intentionally
ephemeral — not stored in shared config files.

We use STDIO-based MCP servers to expose process guidance, conventions, and docs
to coding agents. By using the Model Context Protocol — optimized for
Expand Down
21 changes: 11 additions & 10 deletions config.lock.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,10 @@
version: 1
generated_at: 2026-03-20T08:32:04.912Z
generated_at: 2026-03-26T07:29:04.442Z
choices:
process: codemcp-workflows
practices:
- adr-nygard
- conventional-commits
autonomy: sensible-defaults
harnesses:
- universal
- opencode
- copilot
- kiro
logical_config:
mcp_servers:
- ref: workflows
Expand All @@ -23,6 +17,12 @@ logical_config:
- conduct_review
- list_workflows
- get_tool_info
- ref: knowledge
command: npx
args:
- -y
- "@codemcp/knowledge-server"
env: {}
- ref: agentskills
command: npx
args:
Expand All @@ -45,7 +45,10 @@ logical_config:

Do not use your own task management tools.
cli_actions: []
knowledge_sources: []
knowledge_sources:
- name: conventional-commits-spec
origin: https://github.com/conventional-commits/conventionalcommits.org.git
description: The Conventional Commits specification
skills:
- name: adr-nygard
description: Architecture Decision Records following Nygard's lightweight template
Expand Down Expand Up @@ -143,5 +146,3 @@ logical_config:
- `BREAKING CHANGE:` footer or `!` after type/scope for breaking changes
git_hooks: []
setup_notes: []
permission_policy:
profile: sensible-defaults
8 changes: 0 additions & 8 deletions config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,3 @@ choices:
practices:
- adr-nygard
- conventional-commits
autonomy: sensible-defaults
excluded_docsets:
- conventional-commits-spec
harnesses:
- universal
- opencode
- copilot
- kiro
36 changes: 29 additions & 7 deletions docs/CLI-PRD.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,28 @@ when a facet selection or catalog version is updated.
## CLI Commands

```
ade setup Interactive TUI: walk through facets, write
config.yaml + config.lock.yaml + agent files,
install skills, prompt to initialize knowledge sources.
ade setup Interactive TUI: walk through dev-choice facets only
(process, architecture, practices, backpressure).
Writes config.yaml + config.lock.yaml.
Stages inline skill files to .ade/skills/.
At the end, offers to run `ade configure` immediately.
Re-running setup on an existing project pre-selects
previous choices as defaults. Warns if a previous
selection references an option no longer in the catalog.

ade configure Ephemeral harness configuration — writes no config files.
Prompts for: autonomy profile, target harnesses.
Merges the chosen autonomy policy on top of the locked
logical config (in memory), installs to selected harnesses,
installs all skills (no prompt), and prompts to initialize
knowledge sources.
Run after `ade setup`, after a fresh clone, or any time
you want to change autonomy or switch harnesses.

ade install Reads config.lock.yaml and regenerates agent files for the
selected harnesses (idempotent). Does not re-resolve from
config.yaml. Use `ade setup` to change dev choices;
use `ade configure` to change harness/autonomy config.
```

## Catalog
Expand Down Expand Up @@ -212,7 +228,7 @@ processes these like any other provision: `docsetWriter` maps each to a
LogicalConfig, which triggers:

1. Automatic addition of the `@codemcp/knowledge-server` MCP server entry
2. A confirmation prompt in `ade setup` — default is to defer initialization
2. A confirmation prompt in `ade configure` — default is to defer initialization

## Non-Goals (initial release)

Expand Down Expand Up @@ -244,6 +260,12 @@ LogicalConfig, which triggers:
Documentation sources are always implied by an upstream selection. They are
declared as `{ writer: "docset", config: {...} }` recipe entries —
consistent with how skills are declared. This eliminates the separate
`Option.docsets[]` field, the `excluded_docsets` opt-out mechanism, and the
per-item confirmation multiselect. Users can still defer or skip
initialization via the single confirm prompt in `ade setup`.
`Option.docsets[]` field and the `excluded_docsets` opt-out mechanism.
Initialization is prompted in `ade configure`.

7. **Dev choices and harness config are separated.** `config.yaml` and the
lock file contain only team-level development choices (process, architecture,
practices, backpressure). Autonomy profile and harness selection are
ephemeral — applied via `ade configure` and not persisted. This lets
individual developers change their autonomy settings without touching
shared config files.
Loading