{"_id":"@aprimediet/codewalker","_rev":"7-325c62323bc532ce28d8aacaebf2324c","name":"@aprimediet/codewalker","dist-tags":{"latest":"1.4.2"},"versions":{"1.0.0":{"name":"@aprimediet/codewalker","version":"1.0.0","keywords":["pi-package","pi-extension","codewalker","project-intelligence","prd","agents-md"],"author":{"url":"https://github.com/aprimediet","name":"aprimediet"},"license":"MIT","_id":"@aprimediet/codewalker@1.0.0","maintainers":[{"name":"aditya.prima","email":"aprimediet@gmail.com"}],"homepage":"https://github.com/aprimediet/codewalker#readme","bugs":{"url":"https://github.com/aprimediet/codewalker/issues"},"pi":{"skills":["./skills"],"extensions":["./index.ts"]},"dist":{"shasum":"1a052fa4fd7010ae15d5de86eeee09c00557beec","tarball":"https://registry.npmjs.org/@aprimediet/codewalker/-/codewalker-1.0.0.tgz","fileCount":10,"integrity":"sha512-QqPsi4akwPYaoeKwwz6DxIl/2HqcwFovtwc4IPXGoJreoe2ohKYjN4mKxSLPRmLSgqZVu5DG3Nf6xQ0Pwq1cxg==","signatures":[{"sig":"MEUCIQCNKRM9WV+8JDLjdXH0AZccBGqQkdwp0wHoYsYLirwvOwIgVyXjG/mKqThjCbImqI2ccbhb62NAr98J+VmaeHk5UUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41404},"type":"module","engines":{"node":">=18"},"gitHead":"f73b6d207e4901dde4e1348f01eaabecdd6f6632","_npmUser":{"name":"aditya.prima","email":"aprimediet@gmail.com"},"repository":{"url":"git+https://github.com/aprimediet/codewalker.git","type":"git"},"_npmVersion":"11.17.0","description":"Project intelligence snapshot for the pi coding agent — /learn-this","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/codewalker_1.0.0_1782395329582_0.8792388016581478","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aprimediet/codewalker","version":"1.1.0","keywords":["pi-package"],"_id":"@aprimediet/codewalker@1.1.0","maintainers":[{"name":"aditya.prima","email":"aprimediet@gmail.com"}],"pi":{"skills":["./skills"],"prompts":["./prompts"],"extensions":["./index.ts"]},"dist":{"shasum":"e69a7a7dc93a8956d3c4227a94619e21805b241e","tarball":"https://registry.npmjs.org/@aprimediet/codewalker/-/codewalker-1.1.0.tgz","fileCount":31,"integrity":"sha512-tg7BRKezvvIU7QcmqimhknTEONzuLftSR0mN7daO74s2SZg7dhqFb2SSUGjILl6gxJ39e7MV6QBOzgjCOO616w==","signatures":[{"sig":"MEQCID7qZk7odPMoJfwy2RG3/iTR3Wh8DA0gNU8trzQSe/3OAiBihSAkT0jyyogrjnkx0caw4064un1OzDubeQKe8Qjr1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103981},"type":"module","engines":{"node":">=20"},"gitHead":"09d10c5680d03b51197225cf9d3ddb9e98e8be14","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"aditya.prima","email":"aprimediet@gmail.com"},"_npmVersion":"11.17.0","description":"Queryable, token-economical project & code index for the pi coding agent.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"better-sqlite3":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-agent-core":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/codewalker_1.1.0_1782590203106_0.9712822863384469","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aprimediet/codewalker","version":"1.2.0","keywords":["pi-package"],"_id":"@aprimediet/codewalker@1.2.0","maintainers":[{"name":"aditya.prima","email":"aprimediet@gmail.com"}],"pi":{"skills":["./skills"],"prompts":["./prompts"],"extensions":["./index.ts"]},"dist":{"shasum":"4d030bf0cc1c581b26d746963e5f5c18ea43d862","tarball":"https://registry.npmjs.org/@aprimediet/codewalker/-/codewalker-1.2.0.tgz","fileCount":39,"integrity":"sha512-D2ueYvg2k7469KRLvQl6RO/RjtvTdVfiCyL815izTtxuRInP3q8hWmXqUkuF5O02koE15jUuatIsfbqOUIxywg==","signatures":[{"sig":"MEYCIQCTKJ5e4IcUvRbS1fnDZdpXh54Sm4Za6+QXupo/WNTLHAIhAPM6wk/PBym3YlCwxA7cRxhrZqGavINDexPJjKfamR0K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176543},"type":"module","engines":{"node":">=20"},"gitHead":"4db074587a5cb7719cdf60515979bc04c5e931fb","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"aditya.prima","email":"aprimediet@gmail.com"},"_npmVersion":"11.17.0","description":"Queryable, token-economical project & code index for the pi coding agent.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"better-sqlite3":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-agent-core":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/codewalker_1.2.0_1782590244864_0.34556621005629595","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@aprimediet/codewalker","version":"1.3.0","keywords":["pi-package"],"_id":"@aprimediet/codewalker@1.3.0","maintainers":[{"name":"aditya.prima","email":"aprimediet@gmail.com"}],"pi":{"skills":["./skills"],"prompts":["./prompts"],"extensions":["./index.ts"]},"dist":{"shasum":"8ceb02b46d2b32181b9af3bc3c874ed9646643d4","tarball":"https://registry.npmjs.org/@aprimediet/codewalker/-/codewalker-1.3.0.tgz","fileCount":46,"integrity":"sha512-4Px5yj0ErBIMgCaU8jfg1gDaTH3tgfnL0+ZTdwQwSJipNG4GFvtGC0Hc1quR7pNbG6ASuezVVAqW1Kvdz6QhJg==","signatures":[{"sig":"MEUCIQCx7vwyVb9Zb43gWQttOCCJoxnDA/9fe4qtxZmfu+RexgIgGfAXY/G+rgZr5SARkhvnfoYAAqLvpqfiXFfX2WJba+c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":246267},"type":"module","engines":{"node":">=20"},"gitHead":"3208c44a8388899289e6a3257b3c8000a59732d8","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"aditya.prima","email":"aprimediet@gmail.com"},"_npmVersion":"11.17.0","description":"Queryable, token-economical project & code index for the pi coding agent.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"better-sqlite3":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-agent-core":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/codewalker_1.3.0_1782618564811_0.07548166708062554","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@aprimediet/codewalker","version":"1.4.0","keywords":["pi-package"],"_id":"@aprimediet/codewalker@1.4.0","maintainers":[{"name":"aditya.prima","email":"aprimediet@gmail.com"}],"pi":{"skills":["./skills"],"prompts":["./prompts"],"extensions":["./index.ts"]},"dist":{"shasum":"041cb7f995e95fb33bfe31eee9dee5844c8022e8","tarball":"https://registry.npmjs.org/@aprimediet/codewalker/-/codewalker-1.4.0.tgz","fileCount":56,"integrity":"sha512-X18TGw5AWCORmCkYA2Sy+S2XfqlVk+GN8yZkGTbqrFEJKKfBw210hnEI9NFVupaIh3bN3Hrg5qDV7tr6EAhSKA==","signatures":[{"sig":"MEYCIQDxJfOT5T2BGKeV5CbRRq2IyJIbdfFWMaFF2lsnDU6thwIhAPfcUFUyRgZy+1g+JMeB8rZscvIcAIT+gB4OdzDvwBLt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":335108},"type":"module","engines":{"node":">=20"},"gitHead":"51f29573d3d5675980514ab7aa3ce4f5df722015","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"aditya.prima","email":"aprimediet@gmail.com"},"_npmVersion":"11.17.0","description":"Queryable, token-economical project & code index for the pi coding agent.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"better-sqlite3":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-agent-core":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/codewalker_1.4.0_1782620282861_0.022164696670211814","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@aprimediet/codewalker","version":"1.4.1","keywords":["pi-package"],"_id":"@aprimediet/codewalker@1.4.1","maintainers":[{"name":"aditya.prima","email":"aprimediet@gmail.com"}],"pi":{"skills":["./skills"],"prompts":["./prompts"],"extensions":["./index.ts"]},"dist":{"shasum":"3185c497d66dd40996a1f8e47b5d1e404eb4002f","tarball":"https://registry.npmjs.org/@aprimediet/codewalker/-/codewalker-1.4.1.tgz","fileCount":56,"integrity":"sha512-ytAEmpEQ6DrZhtMwirCM7/4ebtdKvog1RehPopmZaiRAEQaOIIfi1BcIGpobGKqzlCwh87H1IWcYZ4C5MCgMbg==","signatures":[{"sig":"MEYCIQC+ow/E4d7ZD0Za77JLWmCbjDqYJMv5wAelD4BNACTkQQIhAM45BoekqTXWDIJuYaJqToczfiTvOTDG/Jlb9icXku1I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":335108},"type":"module","engines":{"node":">=20"},"gitHead":"43d5eaedfda47f2e76b6f867bc4efcd6385dfe1b","scripts":{"test":"vitest run","test:watch":"vitest"},"_npmUser":{"name":"aditya.prima","email":"aprimediet@gmail.com"},"_npmVersion":"11.17.0","description":"Queryable, token-economical project & code index for the pi coding agent.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"better-sqlite3":"^11.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.6.0","@types/better-sqlite3":"^7.6.0"},"peerDependencies":{"typebox":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","@earendil-works/pi-agent-core":"*","@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/codewalker_1.4.1_1782935154042_0.33405280461121767","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@aprimediet/codewalker","version":"1.4.2","type":"module","description":"Queryable, token-economical project & code index for the pi coding agent.","keywords":["pi-package"],"pi":{"extensions":["./index.ts"],"skills":["./skills"]},"scripts":{"test":"vitest run","test:watch":"vitest"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*","@earendil-works/pi-agent-core":"*","@earendil-works/pi-ai":"*","@earendil-works/pi-tui":"*","typebox":"*"},"dependencies":{"better-sqlite3":"^11.0.0"},"devDependencies":{"vitest":"^1.6.0","@types/better-sqlite3":"^7.6.0"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"gitHead":"49036ace0dc50bc1a85f2deed58e11a170341f20","_id":"@aprimediet/codewalker@1.4.2","_nodeVersion":"24.18.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-Lu4D/gQlOK9P8+UtEYE3wt1hvJWaOdlx9o3f1Lg8NwirwfyCCmAlTspqgUQFxM4vw/FYF8ckAzUSMQx6hHhi8Q==","shasum":"ccad24073a2670207c2ae26226005f76a3a316cd","tarball":"https://registry.npmjs.org/@aprimediet/codewalker/-/codewalker-1.4.2.tgz","fileCount":56,"unpackedSize":339605,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDmd6JgS3FbydD1kuD/CRMOQgIR1UCA/9F9P84uyh0vaAiBhd6sa0lXgk9M8zvZhQJbWu0ua1P7RynIWoZK1adfouQ=="}]},"_npmUser":{"name":"aditya.prima","email":"aprimediet@gmail.com"},"directories":{},"maintainers":[{"name":"aditya.prima","email":"aprimediet@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/codewalker_1.4.2_1782973118565_0.7541978917336687"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-25T13:48:49.389Z","modified":"2026-07-02T06:18:38.817Z","1.0.0":"2026-06-25T13:48:49.716Z","1.1.0":"2026-06-27T19:56:43.267Z","1.2.0":"2026-06-27T19:57:25.076Z","1.3.0":"2026-06-28T03:49:24.965Z","1.4.0":"2026-06-28T04:18:02.990Z","1.4.1":"2026-07-01T19:45:54.196Z","1.4.2":"2026-07-02T06:18:38.697Z"},"keywords":["pi-package"],"description":"Queryable, token-economical project & code index for the pi coding agent.","maintainers":[{"name":"aditya.prima","email":"aprimediet@gmail.com"}],"readme":"# @aprimediet/codewalker\n\n**Queryable, token-economical project & code index for the pi coding agent.**\n\n> [!TIP]\n> Codewalker turns your codebase into a searchable, FTS-backed knowledge base — zero LLM calls from the extension itself. Enrichment, analysis, and review are agent-driven via tools.\n\n<!-- prettier-ignore -->\n\n\\[!\\[NPM version\\](https://img.shields.io/npm/v/@aprimediet/codewalker.svg)\\](https://www.npmjs.com/package/@aprimediet/codewalker)\n\\[!\\[Build Status\\](https://github.com/aprimediet/pi-codewalker/actions/workflows/build-test.yml)\\](https://github.com/aprimediet/pi-codewalker/actions)\n!\\[Node version\\](https://img.shields.io/badge/Node.js->=20-3c873a?style=flat-square)\n!\\[TypeScript\\](https://img.shields.io/badge/TypeScript-blue?style=flat-square&logo=typescript&logoColor=white)\n!\\[License\\](https://img.shields.io/badge/license-MIT-yellow?style=flat-square)\n!\\[Pi package\\](https://img.shields.io/badge/pi-extension-blue?style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NCA0NCI+PHBhdGggZD0iTTEyIDJMNiA2djE2LjM0TDExLjY3IDMyTDEyIDM0LjM0TDEyLjMzIDM0TDE3IDMzLjY2bDQuMzQgLjM0TDE4IDM0bDQuMzQtLjM0TDIwIDM0LjM0TDE5LjY3IDMyTDE2IDYgTDEyIDJ6IiBmaWxsPSIjYjIyMWJhIi8+PC9zdmc+)\n\n## Overview\n\nCodewalker builds and maintains a **full-text search index** of your project's code, library APIs, conceptual notes, and analysis findings — all powered by SQLite FTS5 with BM25 ranking.\n\nIt's a **pi extension** that registers two things:\n\n| Interface | What it does |\n|-----------|-------------|\n| **`codewalker_query`** tool | Search symbols, libraries, notes, and findings. Returns compact facts: name, kind, file:line, summary. |\n| **`/codewalker`** command | Human CLI: `scan`, `sync`, `enrich`, `analyze`, `review`, `findings`, `conventions`, `glossary`, `decisions`, `libs`, `lib`, `help`. |\n\n> [!NOTE]\n> Codewalker makes **zero model/provider API calls**. Enrichment and best-practice analysis are agent-driven — the tool just provides the data; the agent decides what to do.\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────┐\n│  Extension entry point (index.ts)                │\n│  • codewalker_query tool                        │\n│  • /codewalker command with 12 subcommands       │\n└──────────────────────┬──────────────────────────┘\n                       │\n          ┌────────────┴────────────┐\n          │                         │\n┌──────────▼──────────┐  ┌──────────▼──────────┐\n│   Query Layer       │  │   Index Layer       │\n│   FTS5 + BM25       │  │   scan / sync       │\n│   code | libs |     │  │   ctags primary     │\n│   notes | analysis  │  │   regex fallback    │\n└──────────┬──────────┘  └──────────┬──────────┘\n           │                        │\n┌──────────▼────────────────────────▼──────────┐\n│              SQLite (better-sqlite3)           │\n│  • symbols + symbols_fts (code index)          │\n│  • libraries + lib_symbols_fts (API index)     │\n│  • notes_fts (glossary/decisions/conventions)  │\n│  • analysis_fts (coverage/debt/practice)       │\n│  • All FTS sync via triggers (trigger-only)    │\n└───────────────────────────────────────────────┘\n```\n\n### Design Principles\n\n- **Cards as source of truth** — analysis writes markdown cards; DB is reconstructable from cards at any time\n- **Trigger-only FTS** — `*_fts` tables are append-only; base tables drive the index via SQLite triggers\n- **Lazy + capped enrichment** — default 40-symbol cap, bare paths rejected outright\n- **Report-don't-gate** — review never blocks; it's report-only\n- **Zero model calls** — no LLM calls from the extension. Enrichment is agent-driven via tools.\n\n## Features\n\n### Tier 1 — Code Indexing\n\n- **ctags extraction** — primary path, with regex fallback when ctags is unavailable\n- **Library API indexing** — `.d.ts` export extraction (7 forms + re-exports), dependency discovery\n- **FTS5 search** — BM25-ranked full-text search across code, libraries, notes, and findings\n\n### Tier 2 — Enrichment\n\n- **`codewalker_enrich` tool** — write a one-line semantic summary to any symbol's card and DB index\n- **`/codewalker enrich <path>`** — select unenriched symbols under a path, write summaries\n- **Lazy + capped** — default 40-symbol cap, agent decides which to enrich\n\n### Tier 3 — Notes & Knowledge\n\n- **Glossary terms** — conceptual definitions, searchable via FTS\n- **Decision notes** — architecture decisions with rationale\n- **Convention notes** — coding conventions and standards\n- **`codewalker_note` tool** — write a glossary term, decision, or convention\n\n### Tier 4 — Analysis\n\n- **Coverage analysis** — parses `lcov.info` and `coverage-final.json`\n- **Debt scanning** — TODO/FIXME/HACK/XXX markers, `@ts-ignore` usage, oversized files, long functions\n- **Best-practice review** — agent-driven review against conventions + decisions (capped at 25 files)\n- **`codewalker_finding` tool** — write coverage, debt, or practice findings\n\n## Getting Started\n\n### Prerequisites\n\n- **Node.js 20+**\n- **npm** (or pnpm/yarn)\n- **ctags** (optional, regex fallback works without it)\n\n### Install\n\n```bash\npi install npm:@aprimediet/codewalker\n```\n\n## Command Reference\n\n### `/codewalker scan`\n\nFull (re)build of the code index. Scans source files, extracts symbols, indexes libraries.\n\n### `/codewalker sync`\n\nGit-anchored incremental update. Only re-indexes files that changed since the last commit.\n\n### `/codewalker query <text>`\n\nSearch the code index. Returns compact facts ranked by BM25.\n\n### `/codewalker enrich <path>`\n\nSelect unenriched symbols under `<path>` and write summaries. Optional `--max=N` cap.\n\n### `/codewalker analyze [path]`\n\nMechanical analysis: reads coverage artifacts if present, scans debt markers. Reports counts.\n\n### `/codewalker review <path>`\n\nAgent-driven best-practice review against conventions + decisions. Lazy, scoped, capped at 25 files.\n\n### `/codewalker findings [query]`\n\nSearch analysis findings. Optional `--kind=coverage|debt|practice` filter.\n\n### `/codewalker conventions [query]`\n\nSearch coding conventions.\n\n### `/codewalker glossary [query]`\n\nSearch glossary terms.\n\n### `/codewalker decisions [query]`\n\nSearch decision notes.\n\n### `/codewalker libs [--dev]`\n\nIndex all direct dependencies. `--dev` includes devDependencies.\n\n### `/codewalker lib <pkg> [query]`\n\nSearch a specific library's API symbols.\n\n## Query Examples\n\n```bash\n# Search for functions in a specific file\ncodewalker_query --query \"fetch\" --kind function --limit 5\n\n# Search library APIs\ncodewalker_query --query \"useState\" --source libs\n\n# Search notes and findings together\ncodewalker_query --query \"error handling\" --source all\n```\n\n## Database Schema\n\nSchema version 4. All FTS indexes are **trigger-only** — base table DML automatically maintains the search index.\n\n| Table | Purpose |\n|-------|---------|\n| `files` | Indexed file tracking (path, lang, sha) |\n| `symbols` | Source code symbols |\n| `symbols_fts` | FTS5 virtual table for symbols |\n| `libraries` | Direct dependency metadata |\n| `lib_symbols` | Library API symbols |\n| `lib_symbols_fts` | FTS5 for lib_symbols |\n| `notes` | Glossary/decision/convention bridge |\n| `notes_fts` | FTS5 for notes |\n| `analysis` | Coverage/debt/practice findings |\n| `analysis_fts` | FTS5 for analysis |\n| `meta` | Key/value metadata (schema_version) |\n\n## Additional Notes\n\n- **Identity**: aditya.prima <aprimediet@gmail.com>\n- **Version**: 1.4.1\n- **License**: MIT\n- **Documentation**: `prompts/codewalker.md` (agent skill prompt), `skills/codewalker/SKILL.md` (agent guidance)\n- **Deferred features** (v1.2+ candidates): SonarQube/OWASP integration, two-model second brain\n- **Publishing**: Use `NPM_TOKEN` env var; granular token with \"bypass 2fa\" enabled. Use `npm publish --userconfig /tmp/npmrc` to isolate token.\n- **CDN lag**: After publishing, `npm view` may 404 for 2-5 seconds. Wait and retry.\n\n## Resources\n\n- [Pi coding agent documentation](https://github.com/earendil-works/pi-coding-agent)\n- [Pi extension examples](https://github.com/earendil-works/pi-coding-agent/tree/main/examples)\n","readmeFilename":"README.md"}