{"id":49333667,"url":"https://github.com/airscripts/agentskill","last_synced_at":"2026-05-01T04:00:48.679Z","repository":{"id":353676434,"uuid":"1220461696","full_name":"airscripts/agentskill","owner":"airscripts","description":"Analyze a code repository and synthesize an AGENTS.md.","archived":false,"fork":false,"pushed_at":"2026-04-28T23:17:02.000Z","size":446,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-29T02:02:54.969Z","etag":null,"topics":["agents","ai","cli","python","skill"],"latest_commit_sha":null,"homepage":"https://airscript.it","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/airscripts.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-24T23:35:02.000Z","updated_at":"2026-04-28T23:16:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"a6257785-d498-43b9-ad81-4f6954000115","html_url":"https://github.com/airscripts/agentskill","commit_stats":null,"previous_names":["clawdeeo/agentskill","airscripts/agentskill"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/airscripts/agentskill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airscripts%2Fagentskill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airscripts%2Fagentskill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airscripts%2Fagentskill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airscripts%2Fagentskill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/airscripts","download_url":"https://codeload.github.com/airscripts/agentskill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/airscripts%2Fagentskill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32484353,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","ai","cli","python","skill"],"created_at":"2026-04-27T00:01:13.674Z","updated_at":"2026-05-01T04:00:48.626Z","avatar_url":"https://github.com/airscripts.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# agentskill\n\nAnalyze a code repository and synthesize an `AGENTS.md` that lets any agent produce code indistinguishable from the existing codebase.\n\n---\n\n## What It Does\n\nagentskill is not a linter and not a style guide generator. It is a forensic extraction tool. It walks a repository, measures every line, reads every config file, and inspects the commit log — then synthesizes a precise behavioral spec for a code-generating agent.\n\nThe output is not advice. It is mimicry instructions.\n\n---\n\n## How It Works\n\nSeven analysis scripts run in parallel. Each extracts one class of signal that an LLM cannot derive reliably from reading source files alone:\n\n| Script       | What it measures                                                    |\n| ------------ | ------------------------------------------------------------------- |\n| `scan.py`    | Directory tree, file inventory, suggested read order                |\n| `measure.py` | Exact indentation, line length percentiles, blank line distributions |\n| `config.py`  | Formatter, linter, and type-checker detection with config excerpts  |\n| `git.py`     | Commit prefixes, branch naming, merge strategy, signing             |\n| `graph.py`   | Internal import graph, circular dependencies, most-depended modules |\n| `symbols.py` | Symbol name extraction, naming pattern clustering, affix detection  |\n| `tests.py`   | Test-to-source mapping, framework detection, fixture extraction     |\n\nScript output feeds directly into `AGENTS.md` synthesis. The synthesis step follows the behavioral spec in [`SYSTEM.md`](./SYSTEM.md).\n\n---\n\n## Install\n\n```bash\npip install -e .\n```\n\nFor local development:\n\n```bash\npython -m pip install -e '.[dev]'\n```\n\nTo enable the commit-time checks after installing the dev environment:\n\n```bash\npre-commit install\n```\n\n---\n\n## Development Checks\n\nRun the baseline quality checks locally:\n\n```bash\nruff format .\nruff check .\nmypy\npytest\n```\n\nTo verify without changing files:\n\n```bash\nruff format --check .\nruff check .\nmypy\npytest\n```\n\nTo run the commit-time hooks across the full repository:\n\n```bash\npre-commit run --all-files\n```\n\nThe pre-commit setup runs Ruff formatting, Ruff linting, and mypy before each\ncommit. Full `pytest` runs remain part of normal local verification and CI,\nrather than a default commit-time hook.\n\n---\n\n## Usage\n\n```bash\n# Run all scripts and synthesize a report\npython cli.py analyze \u003crepo\u003e --pretty\n\n# Run individual scripts\npython cli.py scan \u003crepo\u003e --pretty\npython cli.py measure \u003crepo\u003e --lang python --pretty\npython cli.py config \u003crepo\u003e --pretty\npython cli.py git \u003crepo\u003e --pretty\npython cli.py graph \u003crepo\u003e --pretty\npython cli.py symbols \u003crepo\u003e --pretty\npython cli.py tests \u003crepo\u003e --pretty\n\n# Write output to file\npython cli.py analyze \u003crepo\u003e --out report.json\n\n# Run a script directly\npython scripts/scan.py \u003crepo\u003e --pretty\n```\n\n---\n\n## Repository Structure\n\n```\ncli.py              # unified entry point — subcommand dispatch only\npyproject.toml      # build metadata and entry point declaration\nSYSTEM.md           # behavioral spec for AGENTS.md generation — never modify\nSKILL.md            # operational workflow — never modify\nAGENTS.md           # conventions for this repo itself\nscripts/\n  commands/\n    scan.py         # directory tree walk, file inventory, read order\n    measure.py      # indentation, line lengths, blank lines, trailing whitespace\n    config.py       # formatter/linter/type-checker detection from config files\n    git.py          # commit log parsing, branch analysis, merge strategy\n    graph.py        # internal import graph, cycle detection, monorepo detection\n    symbols.py      # symbol name extraction and naming pattern clustering\n    tests.py        # test-to-source mapping, framework detection, fixture extraction\n  lib/\n    runner.py       # aggregate analyzer orchestration for `analyze`\n    output.py       # shared JSON output helpers for CLI and scripts\n  common/\n    constants.py    # shared repository-walk constants\n    fs.py           # shared low-level filesystem helpers\n  scan.py           # thin wrapper for direct script execution\n  measure.py        # thin wrapper for direct script execution\n  config.py         # thin wrapper for direct script execution\n  git.py            # thin wrapper for direct script execution\n  graph.py          # thin wrapper for direct script execution\n  symbols.py        # thin wrapper for direct script execution\n  tests.py          # thin wrapper for direct script execution\nreferences/\n  GOTCHAS.md        # extraction and synthesis errors to avoid\nexamples/\n  SINGLE_LANGUAGE.md   # reference output: single-language repo\n  MULTI_LANGUAGE.md    # reference output: multi-language single repo\n  MONOREPO.md          # reference output: monorepo with multiple services\n```\n\n---\n\n## File Ecosystem\n\nThree files govern behavior. Read all three before modifying anything.\n\n| File            | Role                                                                               |\n| --------------- | ---------------------------------------------------------------------------------- |\n| `SYSTEM.md`     | The canonical spec: what every section of `AGENTS.md` must contain and how to evaluate it |\n| `SKILL.md`      | The operational workflow: when to invoke, what scripts to run, in what order       |\n| `GOTCHAS.md`    | Extraction and synthesis errors from previous runs — read before writing           |\n\nThe public commands stay the same after refactors. Internal code is organized by technical role: analyzers in `scripts/commands/`, shared CLI infrastructure in `scripts/lib/`, and low-level helpers in `scripts/common/`.\n\n---\n\n## Examples\n\nThe `examples/` directory contains three reference `AGENTS.md` files, each representing a distinct repo shape:\n\n- **`SINGLE_LANGUAGE.md`** — a Go HTTP service with no external tooling\n- **`MULTI_LANGUAGE.md`** — a Python/TypeScript project with shared conventions\n- **`MONOREPO.md`** — a multi-service monorepo with per-service sections\n\nConsult the relevant example before handling an unfamiliar repo shape.\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairscripts%2Fagentskill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fairscripts%2Fagentskill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fairscripts%2Fagentskill/lists"}