{"owner":"genesiscode2026","slug":"genesis-agent-instruction-linter","channel":"genesiscode2026/genesis-agent-instruction-linter","version":"1.0.0","artifact_sha256":"d6de2f7ed6565c0cae9a273f0cf71dedbe2815a09e009821e523c218e081f7a8","published_at":"2026-09-17T11:45:05.890Z","price_micro":"19000000","update_price_micro":"5000000","resource_endpoint":"https://x402git.com/api/r/genesiscode2026/genesis-agent-instruction-linter","version_url":"https://x402git.com/api/v/genesiscode2026/genesis-agent-instruction-linter","computed":{"artifact_class":"Toolkit","component_inventory":[{"kind":"scripts","count":4},{"kind":"tests","count":5},{"kind":"docs","count":5},{"kind":"config","count":1},{"kind":"assets","count":1},{"kind":"other","count":1}],"file_count":17,"dir_depth":3,"bytes_text":18570,"bytes_binary":226,"languages":{"Python":11305},"tree":[{"path":".gitignore","size":103,"binary":false},{"path":"CHANGELOG.md","size":507,"binary":false},{"path":"LICENSE","size":961,"binary":false},{"path":"QUICKSTART.md","size":882,"binary":false},{"path":"README.md","size":3531,"binary":false},{"path":"SECURITY.md","size":274,"binary":false},{"path":"VERSION","size":6,"binary":true},{"path":"bin/genesis-instruction-linter","size":220,"binary":true},{"path":"genesis_instruction_linter/__init__.py","size":216,"binary":false},{"path":"genesis_instruction_linter/__main__.py","size":2681,"binary":false},{"path":"genesis_instruction_linter/linter.py","size":6332,"binary":false},{"path":"pyproject.toml","size":627,"binary":false},{"path":"tests/fixtures/clean_workspace/AGENTS.md","size":176,"binary":false},{"path":"tests/fixtures/clean_workspace/CLAUDE.md","size":114,"binary":false},{"path":"tests/fixtures/conflicting_workspace/AGENTS.md","size":133,"binary":false},{"path":"tests/fixtures/conflicting_workspace/CLAUDE.md","size":177,"binary":false},{"path":"tests/test_linter.py","size":1856,"binary":false}],"readme_html":"<h2>genesis-agent-instruction-linter</h2>\n<blockquote><p><strong>Deterministic policy conflict detector and broken reference auditor for multi-agent repositories.</strong></p></blockquote>\n<p><img src=\"https://img.shields.io/badge/version-1.0.0-blue.svg\" alt=\"Version\" loading=\"lazy\" decoding=\"async\" /> <img src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\" loading=\"lazy\" decoding=\"async\" /> <img src=\"https://img.shields.io/badge/dependencies-0-brightgreen.svg\" alt=\"Zero Dependencies\" loading=\"lazy\" decoding=\"async\" /></p>\n<hr />\n<h3>The Problem</h3>\n<p>Modern AI development stacks often maintain multiple instruction files across different tools:</p>\n<ul><li><code>AGENTS.md</code> (OpenAI / generic agent conventions)</li><li><code>CLAUDE.md</code> (Anthropic Claude Code conventions)</li><li><code>GEMINI.md</code> (Google Antigravity / Gemini guidelines)</li><li><code>.cursorrules</code> / <code>.clinerules</code> (IDE assistants)</li></ul>\n<p>As rules evolve, conflicting directives emerge silently: one file specifies <code>Never git push to main directly</code>, while another says <code>Always automatically git push on completion</code>. Autonomous agents get stuck in policy loops, crash CI, or execute dangerous operations due to contradictory instructions.</p>\n<h3>The Solution</h3>\n<p><code>genesis-agent-instruction-linter</code> statically parses all agent instruction files in a repository, extracts operational directives, tags polarities (<code>FORBIDDEN</code> vs <code>PERMITTED</code>), and flags semantic topic collisions (e.g. <code>git_push</code>, <code>git_commit</code>, <code>destructive_clean</code>, <code>dep_install</code>, <code>secrets</code>). It also detects dead file references in markdown links.</p>\n<hr />\n<h3>Key Features</h3>\n<ul><li><strong>Zero Third-Party Dependencies</strong>: Pure Python 3 standard library (<code>pathlib</code>, <code>re</code>, <code>argparse</code>, <code>json</code>).</li><li><strong>Semantic Topic Collision Detection</strong>: Pinpoints contradictory instructions between files with line numbers and exact rule quotes.</li><li><strong>Dead Link &amp; Missing Doc Auditor</strong>: Identifies broken markdown documentation links cited in agent instructions.</li><li><strong>Machine-Readable JSON Mode</strong>: Integrates into pre-commit hooks and CI pipelines (<code>--json</code>).</li><li><strong>Instant Execution</strong>: Audits standard multi-agent repos in under 10ms.</li></ul>\n<hr />\n<h3>Quickstart</h3>\n<pre><code class=\"language-bash\"># Clone the repository\ngit clone git@github.com:genesiscode2026/genesis-agent-instruction-linter.git\ncd genesis-agent-instruction-linter\n\n# Run against current repository or any workspace\n./bin/genesis-instruction-linter /path/to/project\n\n# Or output structured JSON for CI\n./bin/genesis-instruction-linter --json /path/to/project\n</code></pre>\n<hr />\n<h3>Example Output</h3>\n<pre><code class=\"language-text\">==================================================================\n  GENESIS AGENT INSTRUCTION CONFLICT LINTER — AUDIT REPORT\n==================================================================\nWorkspace Scanned : /path/to/project\nFiles Inspected   : 2 (AGENTS.md, CLAUDE.md)\nOverall Status    : [ FAIL ]\nSummary           : 1 Critical, 0 High, 1 Broken Links\n------------------------------------------------------------------\n[CRITICAL] Topic Conflict: &#39;git_push&#39;\n  • Rule A: AGENTS.md:4 (FORBIDDEN) -&gt; &quot;- Strictly prohibited: never git push to main directly.&quot;\n  • Rule B: CLAUDE.md:4 (PERMITTED) -&gt; &quot;- Always automatically git push to main when work is finished.&quot;\n  • Reason: Polarity contradiction on &#39;git_push&#39;: AGENTS.md:4 (FORBIDDEN) vs CLAUDE.md:4 (PERMITTED)\n\n[WARN] Broken Path Reference in CLAUDE.md: &#39;docs/non_existent.md&#39; does not exist.\n==================================================================\n</code></pre>\n<hr />\n<h3>Commercial Distribution</h3>\n<ul><li><strong>Product Name</strong>: <code>genesis-agent-instruction-linter</code></li><li><strong>Catalog ID</strong>: <code>P05</code></li><li><strong>Price</strong>: $19</li><li><strong>Seller</strong>: <code>genesiscode2026</code></li><li><strong>Authorized Payout Rail</strong>: USDC on Base (<code>0xC6F86e170411182114FcCdb28793dC76B5e8D144</code>)</li><li><strong>License</strong>: MIT</li></ul>","dependencies":[],"licence":{"verdict":"manual"},"scan":{"verdict":"pass","scanner_version":"2026.09.1","at":"2026-09-17T11:45:08.947Z","checks":[{"id":"secrets","tool":"x402git/secrets","tool_version":"2026.09.1","status":"pass","at":"2026-09-17T11:45:08.947Z","findings":0},{"id":"limits","tool":"x402git/limits","tool_version":"2026.09.1","status":"pass","at":"2026-09-17T11:45:08.947Z","findings":0},{"id":"known_vulns","tool":"osv.dev","tool_version":"2026-09-17","status":"pass","at":"2026-09-17T11:45:08.947Z","findings":0,"packages":0},{"id":"known_malware","tool":"osv.dev/MAL","tool_version":"2026-09-17","status":"pass","at":"2026-09-17T11:45:08.947Z","findings":0,"packages":0},{"id":"dep_behaviour","tool":"socket.dev","tool_version":"2026-09-17","status":"findings","at":"2026-09-17T11:45:08.947Z","findings":20,"packages":3},{"id":"capabilities","tool":"x402git/caps","tool_version":"2026.09.1","status":"findings","at":"2026-09-17T11:45:08.947Z","findings":3},{"id":"injection","tool":"x402git/inject","tool_version":"2026.09.1","status":"pass","at":"2026-09-17T11:45:08.947Z","findings":0}],"findings":[{"kind":"capability","check":"capabilities","tier":"disclosed","rule_id":"build-hook","severity":"MODERATE","description":"[build-system] runs when this is installed","path":"pyproject.toml"},{"kind":"capability","check":"capabilities","tier":"disclosed","rule_id":"script","severity":"LOW","description":"Ships the script bin/genesis-instruction-linter","path":"bin/genesis-instruction-linter"},{"kind":"capability","check":"capabilities","tier":"disclosed","rule_id":"script","severity":"LOW","description":"Ships the script genesis_instruction_linter/__main__.py","path":"genesis_instruction_linter/__main__.py"},{"kind":"behaviour","check":"dep_behaviour","tier":"review","rule_id":"gptAnomaly","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — flagged for review by Socket's classifier as anomalous","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"review","rule_id":"gptAnomaly","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — flagged for review by Socket's classifier as anomalous","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"review","rule_id":"gptAnomaly","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — flagged for review by Socket's classifier as anomalous","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"review","rule_id":"gptAnomaly","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — flagged for review by Socket's classifier as anomalous","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"envVars","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — reads environment variables","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"filesystemAccess","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — reads or writes files","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"hasNativeCode","severity":"MODERATE","description":"setuptools 84.0.0 (direct, dev only) — ships compiled native code","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"shellAccess","severity":"MODERATE","description":"setuptools 84.0.0 (direct, dev only) — runs shell commands","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"urlStrings","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — contains hard-coded URLs","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"usesEval","severity":"MODERATE","description":"setuptools 84.0.0 (direct, dev only) — evaluates code at runtime","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"review","rule_id":"gptAnomaly","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — flagged for review by Socket's classifier as anomalous","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"review","rule_id":"gptAnomaly","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — flagged for review by Socket's classifier as anomalous","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"review","rule_id":"gptAnomaly","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — flagged for review by Socket's classifier as anomalous","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"envVars","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — reads environment variables","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"filesystemAccess","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — reads or writes files","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"hasNativeCode","severity":"MODERATE","description":"setuptools 84.0.0 (direct, dev only) — ships compiled native code","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"shellAccess","severity":"MODERATE","description":"setuptools 84.0.0 (direct, dev only) — runs shell commands","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"urlStrings","severity":"LOW","description":"setuptools 84.0.0 (direct, dev only) — contains hard-coded URLs","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"usesEval","severity":"MODERATE","description":"setuptools 84.0.0 (direct, dev only) — evaluates code at runtime","package":{"ecosystem":"pypi","name":"setuptools","version":"84.0.0","direct":true,"dev":true},"source":"socket.dev"},{"kind":"behaviour","check":"dep_behaviour","tier":"disclosed","rule_id":"missingLockfile","severity":"LOW","description":"Socket SBOM Resolver (transitive) — no lockfile, so installs are not reproducible","package":{"ecosystem":"generic","name":"Socket SBOM Resolver","direct":false,"dev":false},"source":"socket.dev"}],"capabilities":{"tools":[],"runs":[{"path":"pyproject.toml","kind":"build_hook","detail":"[build-system]"},{"path":"bin/genesis-instruction-linter","kind":"script"},{"path":"genesis_instruction_linter/__main__.py","kind":"script"}],"hosts":[{"host":"img.shields.io","local":false,"from":"docs","paths":["README.md"]}],"env":[],"install_runs":true,"summary":"runs 2 scripts · links to 1 host in its docs · runs at install"},"counts":{"blocking":0,"disclosed":16,"review":7}},"cadence_sentence":"One release so far.","originality":{"blob_overlap_ratio":0.188,"blobs_seen_elsewhere":3,"blobs_total":16,"nearest_listing":"genesiscode2026/genesis-repository-truth-context","derivative_of":null},"engineering":{"unique_5gram_ratio":0.632,"type_token_ratio":0.512,"effective_code_lines":147,"effective_doc_words":625,"code_files":4,"test_files":5,"padding_suspected":false},"cadence":{"releases":1,"median_days_between_releases":null,"on_time_fraction":null,"days_since_last":0,"score":null,"finished":false},"inventory_sentence":"4 scripts · 5 test files · 5 docs · 1 config file","extensions":{"md":8,"py":4,"toml":1,"(none)":4},"lines_of_code":232,"warnings":["sbom_unavailable"],"repo_meta":{"repo_id":1374261123,"name":"genesis-agent-instruction-linter","full_name":"genesiscode2026/genesis-agent-instruction-linter","description":null,"homepage":null,"topics":[],"language":"Python","default_branch":"main","size_kb":9,"created_at":"2026-09-17T10:21:48Z","pushed_at":"2026-09-17T10:21:53Z","licence_spdx":null,"open_issues":null,"stars":null,"forks":null,"watchers":null,"archived":false,"private":true,"html_url":null},"owner":{"login":"genesiscode2026","name":null,"avatar_url":"https://avatars.githubusercontent.com/u/329895054?v=4","bio":null,"blog":null,"company":null,"location":null,"twitter_username":null,"followers":null,"public_repos":6,"created_at":"2026-09-16T08:01:39Z","html_url":"https://github.com/genesiscode2026"},"computed_at":"2026-09-17T11:45:17.784Z","analyzer_version":"0.1.0"},"self_reported":{"description":"Detect conflicting instructions in AGENTS.md, CLAUDE.md","trigger_hint":"When requiring verified Developer Workflow functionality in autonomous workflows"}}