cd /news/developer-tools/show-hn-directed-contexts-repo-owned… · home topics developer-tools article
[ARTICLE · art-55447] src=github.com ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Show HN: Directed Contexts – repo-owned instruction modules for coding agents

A developer released Directed Contexts, an open-source pattern for creating repository-owned instruction modules that coding agents can load inline or spawn in isolation, enabling bounded codebase ownership and deterministic validation. The project includes a scanner, generator, and drift detection tool, extracted from a working prototype and hardened with mechanisms from sibling repositories.

read3 min views1 publishedJul 11, 2026
Show HN: Directed Contexts – repo-owned instruction modules for coding agents
Image: source

Generate bounded codebase ownership contexts that agents can load inline or spawn in isolation.

A Directed Context is a repository-owned instruction module with an explicit domain, owned paths, invariants, adjacent contexts, and verification contract. This repository ships the pattern specification, a generator skill that produces context sets for any repository, a deterministic validation tool, and two golden examples.

The outputs are portable Markdown. They do not require Claude, Codex, Copilot, or any particular subagent implementation — a harness with native subagents can spawn one scoped by a context; a harness without them loads the same context inline.

your-repo/
├── AGENTS.md                    # Context Router: universal rules + routing tables
└── .subagents/
    ├── README.md                # Context index
    ├── AGENTS-RUNTIME.md        # Directed context (primary owner of paths)
    ├── AGENTS-WORKER.md         # Directed context (primary owner of paths)
    ├── AGENTS-SECURITY.md       # Policy overlay (cross-cutting, owns no paths)
    └── route-cases.json         # Testable routing fixtures

The codebase is the state.

AGENTS.md

is the map..subagents/*.md

are bounded ownership contexts. The runtime chooses whether to load or spawn.

The pattern was extracted from a working prototype — leather's seventeen-guide .subagents/

routing table — and hardened with mechanisms from three sibling repositories: it sits beside directed-workflows (processes agents walk users through), borrows its coordinate-verification gate from abductive-triage, and takes its detect-deterministically/ask-only-judgment split from security-context-spec. The full ancestry, including what the prototype still teaches the abstraction, is in LINEAGE.md.

Point your agent at a repository and invoke the skill (SKILL.md

). It will:

  • Run the deterministic scanner — contextctl scan

— to inventory packages, entry points, existing instructions, CODEOWNERS, and commands. - Verify the repo's coordinate system (root, monorepo boundaries, source vs. generated trees) before modeling anything.

  • Propose ownership boundaries from weighted evidence, asking only about genuinely ambiguous ones.
  • Generate the contexts, index, router, and route-case fixtures.
  • Validate everything mechanically.
go run scripts/contextctl.go scan   --repo /path/to/your/repo
go run scripts/contextctl.go check  --repo /path/to/your/repo
go run scripts/contextctl.go routes --repo /path/to/your/repo --cases .subagents/route-cases.json

For a repo that already has a router and contexts, the skill routes to audit mode:

go run scripts/contextctl.go check --repo /path/to/your/repo
go run scripts/contextctl.go drift --repo /path/to/your/repo

drift

reports unowned packages, deleted owned paths, overlapping claims, stale review dates, missing verification commands, and split/merge candidates.

Path Contents

LINEAGE.mdSKILL.mdreferences/scripts/contextctl.goscan

, check

, routes

, drift

assets/templates/examples/abductive-triage/examples/security-context-spec/| Term | Meaning | |---|---| Context Router | Root AGENTS.md ; maps work signals and paths to contexts | Directed Context | One .subagents/AGENTS-{DOMAIN}.md module | Context Set | The router plus every directed context | Primary context | The sole owner of a package/path | Policy overlay | Cross-cutting security, performance, operations, or quality context | Inline load | Read the context into the current session | Isolated spawn | Start a subagent scoped by that context | Route case | A representative task with an expected context selection | Context drift | Codebase structure or behavior no longer matching the router/guides |

Full definitions and invariants live in PATTERN.md.

The Markdown is canonical. There is no hidden manifest;contextctl

parses and validates the routing tables and context files directly.Contexts are coordination, not authorization. A spawned subagent inherits the caller's permissions; ownership scopes are never security enforcement.Deterministic where possible, human where necessary. The scanner answers every question that lives on disk; users decide only contested boundaries.Read-only by default. The scanner never writes, never executes repository content, never follows symlinks out of the repo, and generation shows the proposed file set before writing.

Requires Go 1.22+.

make test            # unit tests (fixtures + golden examples)
make check           # lint + format check + tests + golden validation
make check-examples  # validate both golden context sets
make scan REPO=...   # run the scanner against any repo
── more in #developer-tools 4 stories · sorted by recency
── more on @tgpski 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-directed-con…] indexed:0 read:3min 2026-07-11 ·