Borrowing it
Nothing to install: this file belongs to jhlee111/ash_grant. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/jhlee111/ash_grant/main/CLAUDE.mdgit clone --depth 1 https://github.com/jhlee111/ash_grantWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/jhlee111/ash_grant/claude-md)<a href="https://agentmods.dev/instructions/jhlee111/ash_grant/claude-md"><img src="https://agentmods.dev/badge/instructions/jhlee111/ash_grant/claude-md.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.02346 | $0.02346 |
| Opus 5 | $0.01173 | $0.01173 |
| Sonnet 5 | $0.00469 | $0.00469 |
| Haiku 4.5 | $0.00235 | $0.00235 |
Grade A, and why
ash_grant CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 187 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
AshGrant is a permission-based authorization extension for Ash Framework. It provides an Apache Shiro-inspired permission system with deny-wins semantics, supporting both RBAC and resource-instance permissions.
Language Policy
All repository content must be written in English, including:
- README.md, CHANGELOG.md, and all documentation
- Code comments and docstrings (@moduledoc, @doc)
- Commit messages and PR descriptions
- CLAUDE.md instructions
Common Commands
# Run tests (auto-creates and migrates test DB)
mix test
# Run a single test file
mix test test/ash_grant/permission_test.exs
# Run a specific test by line number
mix test test/ash_grant/permission_test.exs:42
# Linting
mix credo
# Type checking
mix dialyzer
# Generate documentation
mix docs
# Database management (test only)
mix ecto.setup # Create and migrate
mix ecto.reset # Drop, create, and migrate
# Policy configuration testing (NOT mix test)
mix ash_grant.verify test/support/policy_test_fixtures.ex
mix ash_grant.verify priv/policy_tests/ # Run all YAML tests
mix ash_grant.verify path/to/test.yaml --verbose # Verbose output
Architecture
Core Modules
AshGrant(lib/ash_grant.ex) - Main extension module, exportscheck/1andfilter_check/1AshGrant.Dsl(lib/ash_grant/dsl.ex) - Spark DSL definition for theash_grantblockAshGrant.Permission(lib/ash_grant/permission.ex) - Parses and matches permission strings (resource:instance_id:action:scope). Also exposesdiagnostics/1, which reports deprecated/dead grant syntax for offline auditing (never affects authorization)AshGrant.Evaluator(lib/ash_grant/evaluator.ex) - Implements deny-wins evaluation logic
Policy Checks
AshGrant.Check(lib/ash_grant/checks/check.ex) - SimpleCheck for write actions (returns true/false)AshGrant.FilterCheck(lib/ash_grant/checks/filter_check.ex) - FilterCheck for read actions (returns filter expression)AshGrant.PermissionValidation(lib/ash_grant/permission_validation.ex) - Validates resolved permissions and signals invalid deny+field_group combinations per thefield_group_permissionsmode (:off/:warn/:strict); never changes the authorization outcomeAshGrant.IndeterminateMatch(lib/ash_grant/indeterminate_match.ex) - Signals when anEvaluatorentry point returns a value that couldn't actually be determined: a type wildcard evaluated with noaction_typeis silently skipped, so the answer may be wrong (#126, layer 2). Wraps every nil-defaulting entry point (has_access?,get_scope,get_all_scopes,get_write_scopes,get_field_group,get_all_field_groups,find_matching,field_group_grants). Mode:off/:warn/:strictviaconfig :ash_grant, indeterminate_type_wildcard:; never changes the outcome. Sound by construction:guard/6recomputes the result with the skipped wildcards forced to match and signals only if it differs — so a scope-less/group-less wildcard or a concrete-deny-settled query stays silent (no false positives, which would break:strict).get_matching_instance_idsis unguarded on purpose (it sees only instance perms, where type wildcards are dead perdiagnostics/1, not indeterminate)AshGrant.FieldFilterCheck(lib/ash_grant/checks/field_filter_check.ex) - FilterCheck for per-record field-group visibility; generated intofield_policiesbyAddFieldPolicies. Builds a per-row predicate fromEvaluator.field_group_grants/5(a field is visible on some records,%Ash.ForbiddenField{}on others)AshGrant.FieldCheck(lib/ash_grant/checks/field_check.ex) - legacy action-wide SimpleCheck for field groups (superseded byFieldFilterCheckin generation; still present)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 187 lines · 2,346 tokens per session scan A 70c6a4397f7d
ash_grant CLAUDE.md is an instructions file published in the GitHub repository jhlee111/ash_grant (17 stars, last pushed 1mo ago), licensed MIT. It adds 2,346 tokens to every session, about $0.0117 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-01.
Other instructions, from other repositories
codex AGENTS.md
AGENTS.md instructions for openai/codex, covering rust/codex-rs, the codex-core crate, code review rules, crate api surface and model visible context.
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
next.js AGENTS.md
AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, applying the notice (cutover) and fallback chain (never fail the build).
spec-kit AGENTS.md
AGENTS.md instructions for github/spec-kit, covering agents.md, about spec kit and specify, quickstart — add a new integration in 5 steps, integration architecture and integrationmanifest — file tracking.