Skip to content

feat: wardline install — one-command agent enablement + sibling bindings#14

Merged
tachyon-beep merged 17 commits into
mainfrom
feat/wardline-install-command
May 31, 2026
Merged

feat: wardline install — one-command agent enablement + sibling bindings#14
tachyon-beep merged 17 commits into
mainfrom
feat/wardline-install-command

Conversation

@tachyon-beep

Copy link
Copy Markdown
Collaborator

Summary

Adds wardline install, the "push" mechanism wardline previously lacked: it places wardline's usage guidance where an agent will read it automatically, rather than relying on the agent to discover the MCP server or docs/agents.md.

In one idempotent, non-interactive command it:

  • injects a small hash-fenced block into CLAUDE.md and AGENTS.md (always-loaded context pointing at the gate + loop);
  • installs a bundled wardline-gate skill into .claude/skills/ and .agents/skills/;
  • merges a wardline entry into .mcp.json, preserving any existing servers;
  • detects Clarion (clarion on PATH / WARDLINE_CLARION_URL) and Filigree (.filigree.conf) and records a binding in wardline.yaml — live when a URL env var is set, otherwise a commented stanza for the user to fill.

Prerequisite plumbing: clarion.url/filigree.url are promoted from inert config placeholders to runtime-read fields (precedence: CLI flag > env var > wardline.yaml), so a bare wardline mcp --root . picks up Clarion from config with no URL duplicated into .mcp.json args.

Deliberately the "inject half" of filigree's pipeline — no SessionStart hook, no dashboard, no freshness daemon (freshness is re-run-on-demand). Opt out of any piece with --no-claude-md, --no-agents-md, --no-skill, --no-mcp, --no-bindings.

Design: docs/superpowers/specs/2026-05-31-wardline-install-command-design.md
Plan: docs/superpowers/plans/2026-05-31-wardline-install-command.md

Test Plan

  • pytest — 1001 passed; ruff + mypy clean
  • Wheel build verified to include the bundled skill (force-include)
  • Live smoke test: first run creates all artifacts; second run idempotent
  • End-to-end: a detect-written clarion.url round-trips through the config loader and reaches the MCP server
  • Adversarial: a URL containing " is json.dumps-escaped and stays valid YAML
  • Reviewer: confirm .mcp.json command: "wardline" resolves on your PATH layout

🤖 Generated with Claude Code

John Morrissey and others added 16 commits May 31, 2026 18:07
…bling bindings)

Closes the push-mechanism gap: a single `wardline install` injects a
lightweight hash-fenced block into CLAUDE.md/AGENTS.md, ships the
wardline-gate skill, merges a wardline MCP entry into .mcp.json, and
detects Clarion/Filigree to set up bindings. Promotes clarion.url/
filigree.url from inert config placeholders to runtime-read fields.
No SessionStart hook (deliberate "inject half" of filigree's pipeline).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…h flag>env>config resolution

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
inject_block collapses to a single canonical block (idempotent even if a
file already holds multiple blocks) and handles files lacking a trailing
newline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ert .agents overwrite

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…bling + quote cases

A URL containing a quote previously produced malformed wardline.yaml that
broke the next scan. json.dumps yields a YAML-valid escaped scalar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ding-summary tests

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 31, 2026 09:25

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Promote [Unreleased] to [0.3.0]; bump _version to 0.3.0 (wardline install).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@tachyon-beep
tachyon-beep merged commit 20f9928 into main May 31, 2026
2 checks passed
@tachyon-beep
tachyon-beep deleted the feat/wardline-install-command branch June 22, 2026 20:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants