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/deanhowe-warrior-authority
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.
About
Use cases: agent-building
Reviews
Write a reviewNo 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
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/warrior-authority
What's inside
- Skill name
warrior-authority- Description
- The authority model for agents that touch Git. Use before staging, committing, creating a branch or worktree, pushing, mirroring, migrating, deleting, or reviewing any proposed Git operation — and when deciding what an agent is allowed to do in someone else's repository.
- License
- MIT
- Instructions
- 199 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Warrior authority model An agent that can edit files is not thereby allowed to commit them. An agent that can commit is not thereby allowed to push. Nothing at all confers permission to delete. Most agent damage is not a wrong edit. It is a correct edit applied with authority the agent assumed it had. ## The five authorities are independent | Authority | Grants | Never implies | |---|---|---| | **read** | inspect files, history, refs | edit | | **edit** | change the working tree | commit | | **commit** | write objects to local history | push | | **push** | publish to one named remote | any other remote | | **delete** | remove branches, worktrees, files, stashes | anything, ever — always separately requested | Read them as a ladder that does not climb itself. Holding rung three tells you nothing about rung four. An agent that reasons "I was allowed to commit, so presumably I may push" has invented authority. Push authority is **per remote**, not global. Approval to push `origin` is not approval to push `upstream`, a fork, or a private mirror. ## Authority is recorded, not inferred Authority must live in a durable record the agent reads, not in the agent's recollection of the conversation. Give every unit of work an explicit row: ``` work_item_id what this change belongs to repository_path the canonical repository that owns the files branch the branch this work may touch file_scope the exact paths in scope, enumerated commit_authority none | local push_authority none | approved push_remote the one named remote, when push is approved ``` Two consequences follow, and both matter: - Authority is scoped to **this repository and this work item**, not to the agent. The same agent may hold `commit=local push=approved` on one work item and `commit=none` on another, at the same time. - An agent that cannot find a record grants itself nothing. Absence of a record is absence of authority, never a default of convenience. ## Never infer authority from - being able to edit the file; - the repository being private; - the repository being the agent's "own" project; - a plan having been shown to the human and not objected to — **showing a plan is not consent**; - a previous approval for a similar operation; - the operation being reversible in principle; - the work being obviously correct; - the human being busy, absent, or asleep. ## Evidence standards **A zero exit code is not proof of anything.** Verify the state you intended, by observing that state. - **Push landed?** Confirm the local HEAD commit appears among the remote's refs (`git ls-remote <remote>` and compare against `git rev-parse HEAD`). Never trust the push command's exit status. A push into an already up-to-date repository can exit 0 having transmitted nothing, which is indistinguishable from success unless you check the refs. - **Transport matters.** A filesystem path may support `ls-remote`, `clone` and `fetch` while rejecting every push at the receiving hook. Validate the transport you intend to publish over, and prefer SSH for publishing. - **Never push into a pull-mirror.** A pull-mirror is overwritten from its upstream on a schedule. Anything pushed directly into one is destroyed at the next sync, silently and completely. Detect mirror status before publishing and refuse rather than proceed. - **A mirror protects committed objects only.** Shelves, index-only blobs, stashes, untracked files and unreachable commits have no protection from any remote whatsoever. Never describe a repository as "backed up" on the strength of a mirror existing. - **Builds are not behaviour.** Compiling, and passing type checks, are not evidence a change works. Say what you verified and what you did not. ## Model identity is part of authority When work is delegated to a model through an adapter, record the model that **answered**, not only the model that was **requested**. Adapters fall back. A real, observed case: a session was requested as one vendor's large model at high reasoning effort; the error returned named an entirely different vendor's small model, which does not accept effort settings at all. The request and the responder had diverged silently. Any claim about capability, cost, or quality based on the requested model would have been false. So keep `requested_model` and `model` as separate fields, treat a mismatch as a first-class incompatibility, and preserve that record as evidence rather than retrying over it. ## Before any Git mutation, state 1. the work item and its bounded objective; 2. the canonical repository, and the owner of every nested repository touched; 3. current branch, HEAD, upstream, ahead/behind, remotes; 4. pre-existing dirty or untracked files, explicitly **excluded**; 5. the exact files proposed, enumerated — never `git add .`, never `-A`; 6. the validation performed, and its result; 7. the proposed commit message; 8. whether commit authority exists for this exact scope; 9. whether push authority exists, and the named remote; 10. recovery facts that do not depend on uncommitted work being mirrored. If any of these is unknown, the correct output is a **checkpoint plan**, not an operation. ## Inspection must not mutate Read-only means read-only in practice, not in intent:
From deanhowe/warrior, MIT.
More from deanhowe/warrior
- 0.504score
diagnosing-bugs
deanhowe
Diagnosis loop for hard bugs and performance regressions.
SkillBFreshness: BClaude Code +9 - 0.499score
code-review
deanhowe
Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding…
SkillBFreshness: BClaude Code +9 - 0.499score
codebase-design
deanhowe
Shared vocabulary for designing deep modules.
SkillBFreshness: BClaude Code +9 - 0.496score
wayfinder
deanhowe
Plan a huge chunk of work — more than one agent session can hold — as a shared map of decision tickets on your issue tracker, and resolve them one at a time…
SkillBFreshness: BClaude Code +9 - 0.496score
to-tickets
deanhowe
Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker —…
SkillBFreshness: BClaude Code +9 - 0.496score
triage
deanhowe
Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs.
SkillBFreshness: BClaude Code +9 - 0.496score
setup-engineering-skills
deanhowe
Configure this repo for the engineering skills — set up its issue tracker, triage label vocabulary, and domain doc layout.
SkillBFreshness: BClaude Code +9 - 0.496score
to-spec
deanhowe
Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed.
SkillBFreshness: BClaude Code +9 - 0.493score
ask-warrior
deanhowe
Ask which skill or flow fits your situation.
SkillBFreshness: BClaude Code +9 - 0.488score
implement
deanhowe
Implement a piece of work based on a spec or set of tickets.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Aug 25, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/deanhowe/warrior
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from deanhowe
- 0.504score
diagnosing-bugs
deanhowe
Diagnosis loop for hard bugs and performance regressions.
SkillBFreshness: BClaude Code +9 - 0.499score
code-review
deanhowe
Review the changes since a fixed point (commit, branch, tag, or merge-base) along two axes — Standards (does the code follow this repo's documented coding…
SkillBFreshness: BClaude Code +9 - 0.499score
codebase-design
deanhowe
Shared vocabulary for designing deep modules.
SkillBFreshness: BClaude Code +9 - 0.496score
wayfinder
deanhowe
Plan a huge chunk of work — more than one agent session can hold — as a shared map of decision tickets on your issue tracker, and resolve them one at a time…
SkillBFreshness: BClaude Code +9 - 0.496score
to-tickets
deanhowe
Break a plan, spec, or the current conversation into a set of tracer-bullet tickets, each declaring its blocking edges, published to the configured tracker —…
SkillBFreshness: BClaude Code +9 - 0.496score
triage
deanhowe
Move issues and external PRs through a state machine of triage roles — categorise, verify, grill if needed, and write agent-ready briefs.
SkillBFreshness: BClaude Code +9
Cite this page
warrior-authority skill. Agent Mart. https://agentmart.dev/skills/deanhowe-warrior-authority (last updated 2026-10-24)