{
  "markdown": "<a href=\"https://avishay.co.il\" target=\"_blank\" rel=\"noopener\">\n  <img src=\".github/brand/hero.png\" alt=\"Avishay Bar — Security // AI // Engineering. Secure the AI you build, and the AI you run.\" width=\"100%\" />\n</a>\n\n---\n\n# AttestArc\n\nSecurity expertise for your coding agent.\n\n[![CI](https://github.com/avishayil/attestarc-skill/actions/workflows/ci.yml/badge.svg)](https://github.com/avishayil/attestarc-skill/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Getting started](https://img.shields.io/badge/docs-getting%20started-38BDF8.svg)](https://avishay.co.il/attestarc-skill/)\n\nInstall AttestArc into Claude Code or Cursor and run:\n\n    /attestarc\n\nAttestArc discovers how the current repository is built and delivered, finds\nsecurity issues that matter, and guides you through fixing them.\n\nNo dashboard.\nNo scanner service.\nNo compliance report.\n\nIt works inside the repository, with the coding agent you already use.\n\n> **Public Preview — GitHub & GitHub Actions.** This is a preview release\n> (`0.5.x`) focused on GitHub repositories and GitHub Actions. Other CI systems\n> are detected and reviewed with a generic methodology at lower confidence.\n> Treat it as an expert assistant, not a comprehensive or stable release — your\n> judgment stays in the loop, and every finding cites its evidence.\n\n**New here?** Start with the [getting-started site](https://avishay.co.il/attestarc-skill/).\n\n---\n\n## What it is\n\nAttestArc is an installable [Agent Skill](https://code.claude.com/docs/en/skills)\nfor software supply-chain security. It is **not** a standalone scanner — it has\nno LLM runtime, server, database, or UI of its own. Instead it teaches the host\ncoding agent (Claude Code, Cursor) *what to inspect, what matters, how to record\nfindings, and how to safely remediate them.*\n\nThe principle:\n\n> **The engineer provides the repository. AttestArc provides the security methodology.**\n\n## Security model\n\nAttestArc is a skill that can *learn* — it consults versioned platform facts (a\n*knowledge plane*) that change what a finding means. Because poisoning that\nknowledge would be equivalent to compromising scanner logic, AttestArc partitions\nits own reasoning corpus by trust — **Kernel** (always loaded, never\nruntime-mutated), **Verified Knowledge** (attested, versioned, temporal), and\n**Candidate Knowledge** (untrusted; may shape questions, never conclusions) — and\nships knowledge as a Sigstore-attested, versioned plane anchored by an external\n`trust-anchor.json`. Nothing learned at runtime can grant the running assessor\nmore trust.\n\nSee the [security model](https://avishay.co.il/attestarc-skill/security.html)\npage for a visual overview, [`SECURITY.md`](SECURITY.md) for the public summary\nand reporting policy, and [`THREAT_MODEL.md`](THREAT_MODEL.md) for the full,\nnormative rationale.\n\n## Install\n\n### Prerequisites\n\n- **Python 3.9+** (standard library only — no third-party packages) and **git**.\n- **GitHub CLI (`gh`)** — optional, recommended for read-only remote checks\n  (branch protection, rulesets, Actions policy).\n\n### Claude Code (recommended)\n\nAttestArc is a native Claude Agent Skill: Claude Code automatically discovers\nskills under `.claude/skills/`. The simplest install is a clone of a release tag\n(release tags are protected and immutable, so a pinned tag can't be moved out\nfrom under you):\n\n```bash\n# Global — available in every repository you open\ngit clone --branch v0.5.0 --depth 1 \\\n  https://github.com/avishayil/attestarc-skill.git ~/.claude/skills/attestarc\n\n# Or per-project — scoped to one repository\ngit clone --branch v0.5.0 --depth 1 \\\n  https://github.com/avishayil/attestarc-skill.git .claude/skills/attestarc\n```\n\n> **What a clone does and doesn't guarantee.** A `git clone --branch <tag>` checks\n> out the bytes at that tag; it does **not** verify the tag's signature unless you\n> run `git verify-tag <tag>` yourself with the maintainer's key. If you want a\n> cryptographic guarantee of *who produced the package*, install from the attested\n> release tarball (below) — that path runs `gh attestation verify` against the\n> package's Sigstore build provenance before extracting anything.\n\nPrefer to copy only the skill payload (leaving development files behind)? Use the\ninstaller:\n\n```bash\ngit clone --branch v0.5.0 --depth 1 https://github.com/avishayil/attestarc-skill.git\ncd attestarc-skill\n\npython install.py                                  # current project → .claude/skills/attestarc/\npython install.py --scope user                     # global → ~/.claude/skills/attestarc/\npython install.py --scope project --target /path/to/project\n```\n\n**Verified install (recommended for supply-chain assurance).** Download the\nattested release tarball from the GitHub release and install it via\n`--from-tarball`. The installer runs `gh attestation verify` against\n`bootstrap-anchor.json` (the package's external root of trust) **before**\nextracting anything, and refuses to install if verification fails or `gh` is\nabsent:\n\n```bash\n# Requires the GitHub CLI (`gh`) with attestation support.\ngh release download v0.5.0 --repo avishayil/attestarc-skill \\\n  --pattern 'attestarc-skill-*.tar.gz'\npython install.py --from-tarball attestarc-skill-v0.5.0.tar.gz --scope user\n```\n\nThen, in Claude Code, run `/attestarc`.\n\n### Cursor\n\nCursor natively supports Agent Skills. It auto-discovers skills from\n`.cursor/skills/` and `.agents/skills/` (per-project) and their user-level\nequivalents, and for compatibility it also loads Claude and Codex skill\ndirectories (`.claude/skills/`, `.codex/skills/`). A skill's frontmatter `name`\nmust match its parent folder — AttestArc installs into a folder named\n`attestarc`, so this is already satisfied. No `.cursor/rules/*.mdc` rule is\nneeded.\n\nClone a signed release tag into Cursor's native skills directory:\n\n```bash\n# Cursor-native, per-project\ngit clone --branch v0.5.0 --depth 1 \\\n  https://github.com/avishayil/attestarc-skill.git .cursor/skills/attestarc\n```\n\nOr reuse a shared Claude skills directory, which Cursor also reads:\n\n```bash\ngit clone --branch v0.5.0 --depth 1 \\\n  https://github.com/avishayil/attestarc-skill.git .claude/skills/attestarc\n```\n\nThen, in Cursor's Agent chat, invoke it with `/attestarc` (skills appear in the\n`/` slash search), or just ask Cursor to *\"assess this repository's supply-chain\nsecurity with AttestArc.\"* `python install.py --platform cursor` installs into\n`.cursor/skills/attestarc` for you.\n\n### Uninstall\n\n```bash\npython uninstall.py                # current project\npython uninstall.py --scope user   # global\n```\n\nInstallation only copies the skill payload (`SKILL.md`, `references/`,\n`scripts/`, `assets/`, `LICENSE`, `README.md`) into the host's skills directory.\nDevelopment files (`tests/`, `evals/`, the installer) are not shipped, and\nunrelated host configuration is never modified.\n\n## Usage\n\nOnce installed, in your coding agent:\n\n```text\n/attestarc                  Full relevant assessment of the repository\n/attestarc findings         Show unresolved findings, most important first\n/attestarc fix <id>         Reconfirm, remediate, and verify a finding\n/attestarc verify           Re-check open/remediating findings\n/attestarc changed          Review the security impact of current changes\n/attestarc github-actions   Focus on GitHub Actions\n/attestarc repository       Focus on repository / SCM controls\n/attestarc supply-chain     Focus on release, artifacts, provenance, identity\n```\n\nAttestArc also loads automatically for clearly relevant requests such as\n\"harden this repo\", \"review the GitHub Actions\", or \"is our release process\nsecure?\".\n\n## What it looks for (V1)\n\n- **GitHub repository controls** — branch protection, rulesets, CODEOWNERS,\n  review requirements, signed commits, protected tags.\n- **GitHub Actions** — dangerous trigger combinations, token permissions,\n  mutable Action references, untrusted input, runners, OIDC, environments.\n- **Dependencies** — update tooling, lock files, dependency review, registries.\n- **Identity & secrets** — static credentials, workload identity, secret scope.\n- **Supply chain** — build integrity, artifact identity, signing, provenance.\n- **Changed files** — the security impact of the diff you're working on.\n\nFully supported in V1: **GitHub** + **GitHub Actions**. Other CI systems\n(GitLab CI, CircleCI, Jenkins, …) are detected and reviewed with a generic\nmethodology at lower confidence.\n\n## Runtime footprint\n\nAttestArc keeps a single local working file in the repositories it assesses:\n\n```text\n.attestarc/findings.json\n```\n\nThis is its structured memory — it lets the agent remember findings across\nsessions, avoid duplicates, and know what was already remediated. AttestArc\nadds `.attestarc/` to `.git/info/exclude` rather than editing your tracked\n`.gitignore`, so no unrelated repository change is generated.\n\nSecret values are **never** written to `findings.json`.\n\n## Development\n\n**The repository root is the skill package.** Its layers:\n\n```text\nSKILL.md      how AttestArc thinks and operates   (reasoning)\nreferences/   what AttestArc knows                (expertise)\nscripts/      what it can measure deterministically (facts)\nassets/       contracts and structured resources  (schemas)\nevals/        how we know the agent is good       (behavioral evals)\ntests/        proof the deterministic code works  (pytest)\n```\n\nHelper scripts are stdlib-only deterministic utilities (no third-party\ndependencies) that emit *facts*, not security verdicts — the host agent decides\nwhat the facts mean.\n\n```bash\npython -m pytest        # deterministic code tests (no dependencies required)\n```\n\n`evals/` holds interactive behavioral evaluations of the *agent* (see\n[`evals/README.md`](evals/README.md)); they are judged, not run by pytest.\n\nSee [`SPECIFICATION.md`](SPECIFICATION.md) for the normative specification,\n[`CONTRIBUTING.md`](CONTRIBUTING.md) for how to contribute, and `CLAUDE.md` for\ndevelopment rules. Security issues: see [`SECURITY.md`](SECURITY.md). Release\nhistory: [`CHANGELOG.md`](CHANGELOG.md).\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n",
  "bytes": 10129,
  "sha": "c93a9ec3c9bd5224ae416ca07e26792d6fadeeb0b1b6fc94df916a40bc5a2dfd",
  "repo_slug": "avishayil/attestarc-skill",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/okf_avishayil_attestarc_skill_knowledge_boot_2d999762/readme"
}