Skip to content
Agentmart
Submit a tool

policy-draft

Draft or tighten a Runx operational policy from a governance brief, then validate the exact runx.operational_policy.v1 contract with the native policy engine.

Skill by runxhq

IndexedApache-2.0★ 104
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/runxhq-policy-draft

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Draft or tighten a Runx operational policy from a governance brief, then validate the exact runx.operational_policy.v1 contract with the native policy engine. Use for repository/source/runner/owner policy design, fail-closed policy linting, or authority attenuation; never use this lane to widen an existing policy.

Use cases: documents, design

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/policy-draft

What's inside

Skill name
policy-draft
Description
Draft or tighten a Runx operational policy from a governance brief, then validate the exact runx.operational_policy.v1 contract with the native policy engine. Use for repository/source/runner/owner policy design, fail-closed policy linting, or authority attenuation; never use this lane to widen an existing policy.
License
Apache-2.0
Instructions
115 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (11)

  • SKILL.md
  • composes-in-graph.yaml · fixtures/
  • issue-flow-policy-from-brief.yaml · fixtures/
  • composed.graph · fixtures/support/
  • tighten-existing-policy.yaml · fixtures/
  • vague-brief-needs-input.yaml · fixtures/
  • mark.svg
  • policy-draft.mjs
  • catalog.md · references/
  • mark-license.md · references/
  • run.yaml

SKILL.md (first lines)

# Policy Draft

Produce one reviewable operational-policy proposal. Let the agent translate
intent into policy fields; let the native `policy.lint` tool decide whether the
exact in-memory result is a valid Runx policy.

## Workflow

1. Require concrete target repositories, source locators, owner routes, and an
   available runner. Return `needs_input` when any are unresolved.
2. Draft the smallest `runx.operational_policy.v1` that admits the stated work.
   Unspecified work remains denied.
3. When `existing_policy` is supplied, preserve its target/source/runner set and
   only attenuate authority. Do not add locators, actions, targets, sources, or
   runners; do not lower confidence or weaken human gates.
4. Pass the draft to the deterministic validation step. Never author or trust an
   agent-supplied lint verdict.
5. Return `ready` only when native lint passes. A native failure or attempted
   widening returns `reject` with structured findings.

## Native policy contract

Draft the exact contract consumed by `policy.lint` and the Runx policy parser:

```yaml
schema: runx.operational_policy.v1
schema_version: runx.operational_policy.v1
policy_id: string
sources:
  - source_id: string
    provider: string
    allowed_locators: [string]
    allowed_actions: [string]
    source_thread:
      required: boolean
      publish_mode: reply | comment | none
      missing_behavior: fail_closed
    minimum_confidence: number     # optional
runners:
  - runner_id: string
    kind: string
    state: available | unavailable
    allowed_actions: [string]
    target_repos: [owner/repo]
    scafld_required: boolean
owner_routes:
  - route_id: string
    owners: [string]
    target_repos: [owner/repo]
targets:
  - repo: owner/repo
    runner_ids: [string]
    allowed_actions: [string]
    default_owner_route: string
    scafld_required: boolean
    base_branch: string            # optional
dedupe:
  strategy: source_digest
  key_fields: [string]
  on_duplicate: reuse | comment | block
outcomes:
  observe_provider: boolean
  verification_required: boolean
  close_source_issue: never | when_verified | always
  publish_final_source_thread_update: boolean
permissions:
  auto_merge: boolean
  mutate_target_repo: boolean
  require_human_merge_gate: boolean
```

## Stop conditions

- Missing repository, locator, runner, or owner evidence: `needs_input` with
  `policy: null`; native lint is not run.
- Proposed widening of an existing policy: `reject` before lint and identify the
  widened path.
- Native parse or validation failure: `reject`; never relabel it as ready.
- A request to widen authority: stop and route it to a separate explicit policy
  decision. This skill's existing-policy lane is attenuation-only.

## Output

The final `policy_proposal` contains:

```yaml
decision: ready | needs_input | reject
policy: object | null
validation:
  status: pass | fail | not_run
  engine: runx policy
  findings: [{ code, path, message }]
  readback: object | null
  reason: string
rationale: string
blockers: [string]
needs_input: [string]
success_checkpoint: object
```

The runtime receipt proves which draft was validated. It does not approve or
install the policy.

## Agent task contracts

### `policy-draft-draft`

Draft one policy proposal using the exact runx.operational_policy.v1 contract described by the
skill. Return decision, policy, rationale, blockers, needs_input, and success_checkpoint. Do not
author a lint verdict: the next deterministic step invokes native `policy.lint`. If required
repos, source locators, owners, or runner bindings are missing, return needs_input with policy
null. When existing_policy is supplied, never add authority, targets, sources, runners,
locators, or actions; only tighten permissions, confidence, routing, and outcomes.

From runxhq/runx, Apache-2.0.

More from runxhq/runx

Signals

Stars
104
Forks
109
Open issues
16
Contributors
16
Last commit (this folder)
Oct 17, 2026 (11 days ago)
Last release
Oct 18, 2026 (10 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
Website
runx.ai
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from runxhq

Cite this page

policy-draft skill. Agent Mart. https://agentmart.dev/skills/runxhq-policy-draft (last updated 2026-10-24)