Reading the repo
Reading the repo
Assembly instructions
Turn any idea, plan, or codebase into a beautiful interactive diagram. An agent skill for Claude Code, Codex, and more.
Saved setup from 42 min ago
Will it work on my device?
CONTRIBUTING.mdArchify is Agent-first: people describe systems, and the Skill, typed JSON, renderers, validators, and delivery receipts produce reproducible diagrams. Keep each contribution focused on one user-visible behavior or one tightly related delivery slice. Maintainers and Agents reviewing a PR or a revised head follow Reviewing.
dev.Agreement on direction allows implementation to proceed; final acceptance still depends on the implementation, user-visible results, and maintenance cost. Draft PRs may support early discussion but do not replace scope agreement.
Do not include secrets, access tokens, credentials, private repository content, personal data, or customer data in fixtures, logs, screenshots, artifacts, or package tests.
These steps apply to contributors, maintainers, and Agents:
A scope comment signals active work, not permanent ownership. If work pauses or changes direction, leave an update; others can propose taking it forward in the same thread.
Start from the latest dev and target dev for fixes and features. Check whether its existing controls already solve the reported case. Record the comparison base and candidate head.
Use Draft for unresolved scope or early implementation feedback. At this stage, provide the smallest reproduction and relevant checks. Prepare broad integration evidence and generated artifacts once the approach is settled.
Before requesting final review, explain:
Use the PR template; link existing receipts or CI output instead of transcribing long logs. Classify impact by behavior and callers, not file extension or diff size.
AI-assisted contributions are welcome. The same scope, evidence, and accountability requirements apply to contributors and maintainers, whether work is manual or delegated to an Agent.
Every PR must disclose whether AI was used. If used, name the tool(s), model when known, and the work they performed: investigation, design, code, tests, review, or writing/translation. Identify affected areas rather than estimating a percentage of generated lines. If model identity is unavailable, say so. Translation-only use can be disclosed in one sentence.
A human contributor must review the submitted changes and explanation, understand the approach and its impact, and be able to explain the choices and answer review questions. Name that accountable person by GitHub handle when an Agent or bot submits on their behalf. Agents may prepare changes, run checks, and draft replies under that person's direction; they must not claim human review or check a personal confirmation without that person's explicit confirmation. Project-approved automated review comments remain advisory evidence, not human acceptance.
Describe the problem's origin honestly: observed usage, a reproducible defect found during inspection, a synthetic probe, or a proposed improvement. Code inspection can reveal valid bugs; do not present a constructed case as a naturally occurring Agent failure. AI-generated descriptions and replies must be checked for factual accuracy, kept concise, and reflect the contributor's understanding. Translation and editing assistance are allowed.
Link actual validation results in the existing Tests run / Visual evidence sections. Distinguish checks run by an Agent, CI, and human inspection; preserve failures and disclose untested areas. An AI review, a green test run, or a disclosure checkbox alone does not establish useful or correct behavior. Full sessions are required only where the agreed benchmark/evidence scope calls for them; do not upload unrelated private conversations or hidden model reasoning.
Maintainers may request missing disclosure or evidence, defer review, or close a PR that lacks agreed scope, cannot be explained by its contributor, or contains unverified claims. Give a specific reason and a route back through the relevant issue. Repeated submissions that ignore this feedback may be restricted. Evaluate observable conduct and evidence rather than guessing AI use from writing style or an automated detector. Do not bulk-close older PRs solely because they predate this disclosure field.
Policy references consulted on 2026-10-16: Ghostty, LLVM, and Astral. Archify's requirements are defined here; other projects' restrictions do not apply automatically.
Before requesting final review of a behavior-changing PR, assess the changed behavior, direct callers, and affected tests with the project Skills:
Keep this check within the PR's changed ownership boundaries. A conclusion of “no worthwhile improvement” is valid. Pure prose or generated-only refreshes with no behavior change may skip it; authored Skill instructions and behavioral build inputs still need assessment. Apply proved improvements within the task's existing authorization. Report changes that would retire a supported capability or compatibility contract for maintainer decision.
Summarize useful findings, implemented improvements, or the reason for skipping in the PR's existing problem/impact and test sections. Reuse applicable evidence under Choose evidence by impact; this check adds no separate audit report or CI gate. Repository instructions govern scope and publication authority. Treat the two vendored Skills as read-only guidance in ordinary PRs; update their pinned sources through a dedicated reviewed change. See Skill sources for provenance and update procedure.
| Impact | Typical change | Evidence to prepare | | --- | --- | --- | | Text or review policy | Explanatory prose, links, contributor/reviewer procedure | Check content, links, and consistency with affected templates or automation. No local renderer suite for repository-only prose. | | Local behavior | One CLI path, focused test correction | Reproduction or rationale, affected tests, and relevant failure/compatibility cases. | | Shared behavior | Geometry, text measurement, shared Viewer, evidence or delivery helpers | Trace callers; identify affected modes and contracts; compare fixed representative inputs on base and candidate, including relevant historical failures. | | Contract change | Schema, defaults, validation acceptance, Skill or authoring instructions | Agreed scope and explicit allowed/preserved behavior, plus local/shared evidence appropriate to the implementation. |
Skill instructions, authored examples, build inputs, and generated-site sources are behavioral inputs even when they look like documentation. Policy changes need process review; runtime evidence depends on whether they affect runtime inputs.
Start with npm test for the core product smoke or focused checks for the affected behavior. Use npm run test:full when shared infrastructure, broad changes, or findings require wider coverage. Final review needs sufficient evidence for the impact above; relevant CI results can supply that coverage without repeating the same run locally. Identify the revision and coverage of reused results, and explain material gaps. Required remote CI and branch protection still apply.
Tests should protect a user outcome or a real failure boundary. Prefer rendered content, successful interaction, preserved authored intent, and bounded work to matching implementation source or freezing automatic layout coordinates. A better automatic route, clearer copy, or equivalent refactor should not fail a test merely because it differs from the old implementation. Delete redundant source assertions when a behavior test owns that protection. Keep explicit geometry, compatibility, accessibility, failure cleanup, and protection against lost or corrupted output as observable contracts.
For PRs that change diagram generation, select and link before/after evidence using the real repository benchmark. Its initial rollout is an agreed three-PR pilot; record the selected scope or a justified exemption before running. Contributors supply the comparison and session records; maintainers review outcomes and sample evidence. Synthetic error injection alone does not establish real Agent benefit. Reuse unaffected evidence at its recorded revision.
CI uses the ownership groups in scripts/ci-scope.mjs. Product changes run core
CLI coverage on the maintained Node versions and the affected regression suites.
Renderer and Viewer changes also run the real browser gate and generated-output
checks. Filesystem, process, dependency, build, and workflow changes retain the
full regression and relevant Windows/package gates. New or modified test files
are executed; test helpers and fixtures take the conservative full path.
Repository prose and website-only changes use their own checks.
Unknown paths, an empty comparison, and an unavailable development-push base
select full coverage. An invalid PR comparison fails classification. Required
job names remain present, and a failed classification cannot turn into successful
skips. Main pushes and manual CI runs use complete coverage; releases explicitly
run test:full. New pushes cancel obsolete CI runs for the same PR.
standard preserves broad compatibility. A new showcase failure must identify a real, repairable defect and avoid rejecting necessary routing.diagnostics[]: use a stable code, precise subject, concrete evidence, and executable supportedFixes. Preserve non-zero CLI exits and machine-readable receipts for failed stages.The renderer package is in archify/; repository tests and their dependencies live at the root. Install both dependency sets before running tests. The supported Node range is defined in both package manifests.
npm ci
npm --prefix archify ci
npm test
npm run test:focus -- test/geometry.test.mjs
For the development loop, select the files covering the changed behavior with
npm run test:focus -- test/<name>.test.mjs [test/<other>.test.mjs ...].
This runs only those suites, without the generated-output checks or golden pass.
It requires at least one file and rejects unknown files rather than silently
running the full suite. Paths are relative to the repository root; absolute
paths also work. Use --list with the same selection to inspect it without
running tests. A focused pass is evidence for that selection only.
To narrow a large file further, add a quoted Node test-name pattern (Node 18.11+):
npm run test:focus -- test/cli.test.mjs '--test-name-pattern=cli: validate'
Nested tests follow Node's filtering rules: include their parent test names in the pattern as well. Check the reported pass/skip counts for the intended cases.
| Command | What it establishes |
| --- | --- |
| npm test / npm run test:core | Ten diagram types run through the public CLI, frozen v1 inputs remain usable, delivery receipts bind the actual files, and failed delivery preserves the previous artifact. No browser or perceptual acceptance is implied. |
| npm run test:focus -- test/<name>.test.mjs | Only the selected behavior or regression. |
| npm run test:generated | Viewer, brand marks, validators, release identity, and checked-in examples match their authoritative sources. Freshness does not establish visual quality. |
| npm run test:full | Generated checks followed by every discovered Node test file, including the detailed process, filesystem, installation, and failure matrices. |
The Node 18, 20, and 24 compatibility lanes run the same core product smoke via
test:compat. Detailed fault-injection matrices run on canonical Node 22 when
their responsibility is affected and in complete verification. The separate
browser, WebM, Windows, and package gates retain their distinct claims. Do not
repeat an unchanged complete run locally just because CI is also running it.
For full CI, Node 22 runs every discovered test file across two independent
machines using node scripts/run-tests.mjs --shard=1/2 and --shard=2/2.
One shard also runs generated checks and the Hermes adapter contract once,
using the same installed dependencies. The existing test (22) check requires
both shards to succeed without reinstalling dependencies afterward. Other scopes do not
start these shards. Node 18, 20 and 24 compatibility checks start after scope
classification, without waiting for the complete regression shards.
--list --shard=1/2 shows the selected files; shards cannot
be combined with explicit files or test-name filtering. Locally and in tagged
releases, npm run test:full still runs the complete inventory without sharding.
The Windows Node 22 lane owns the complete filesystem and fault-injection
matrices. Node 24 runs the core CLI smoke instead of repeating those matrices.
Both lanes, including tagged releases, still run the controlled case-sensitive
NTFS, UNC, extended-path, and 8.3-path scenarios. Use
node scripts/run-windows-path-tests.mjs --list (or --smoke --list) to inspect
the selected groups without running tests or creating Windows fixtures.
The test runners accept --concurrency=N to tune the number of simultaneous
test files on Node 18.19+, for example npm run test:focus -- test/geometry.test.mjs --concurrency=4. Headless
repository and compatibility runs default to the available CPU count, capped
at 4. Setting ARCHIFY_CHROME or running test:browser keeps the default at 2.
Older Node versions that lack this concurrency option retain Node's default.
Compare timing and results on the same machine before increasing concurrency;
browser tests can become slower or unstable under CPU contention.
Test through public behavior such as render, validate, deliver, visual-check, or final SVG/HTML. Behavioral fixes should include a regression that demonstrates the original failure. Private helper checks can supplement that evidence.
For geometry and layout changes, use the smallest redacted JSON reproduction, relevant checked-in examples, and frozen compatibility fixtures. Compare base and candidate with the same input and browser conditions. Identify intended changes and investigate unexpected ones; updating golden files alone does not establish visual or compatibility acceptance.
A visual PR must provide enough evidence to evaluate whether the intended user value was achieved, using screenshots, recordings, or reproducible steps. Keep viewport, theme, preset, diagram mode, zoom, and page state comparable. Report automated or browser evidence separately from perceptual review. Non-visual changes may omit the Visual evidence section.
Static SVG/XML checks cannot establish browser layout, font settling, or interaction behavior. When the adaptive reader or Viewer layout changes, run the real browser test from the repository root with Chrome available:
In a POSIX shell:
ARCHIFY_CHROME="/path/to/chrome" npm run test:browser -- test/desktop-reader-browser.test.mjs
In Windows PowerShell:
$env:ARCHIFY_CHROME = 'C:\Program Files\Google\Chrome\Application\chrome.exe'
npm run test:browser -- test/desktop-reader-browser.test.mjs
Replace the example Chrome path with your installed executable's path. In PowerShell, the environment variable remains set for the current session.
A browser test skipped because Chrome was unavailable is skipped, not passed. Follow the delivery contract for visual evidence, receipts, and failure stages. Successful validation, atomic delivery, browser checks, and perceptual review establish different claims.
PR CI and tag releases run the same browser regression gate:
ARCHIFY_CHROME="/path/to/chrome" npm run test:browser
This command requires a usable Chrome/Chromium and fails when none is available.
Its maintained file list is in scripts/browser-test-inventory.mjs; add new browser
suites there so both workflows keep t
Needs Git: xcode-select --install
git clone https://github.com/tt-a1i/archify.git cd archify
Node.js >=18
# needs nvm: brew install nvm (or https://github.com/nvm-sh/nvm) nvm install 18
npm ci
npm test
Current stable version: v3.2.0. See Changelog.
Install Archify for me by reading https://raw.githubusercontent.com/tt-a1i/archify/main/llms.txt
<details>
<summary>More installation options and update-check details</summary>
For an explicit, non-interactive Cursor install:
npx -y skills@latest add https://archify.si --skill archify --agent cursor --global --copy --yes
To try without installing:
npx skills use tt-a1i/archify@archify --agent codex
DSH community opt-in: dsh plugin --profile web add @tt-a1i/archify-dsh@1.0.0
The agent switcher covers cursor, codex, claude-code, and opencode.
Archify may GET the fixed stable manifest solely to show an optional reminder; it never downloads or installs updates. Successful checks wait about 24 hours (±20%); active use retries failures after 6, then 24 hours. The server sees normal HTTP metadata (IP and time), but receives no version, Agent, project data, prompts, account/device ID, or ETag. You decide whether and when to update. Set ARCHIFY_UPDATE_CHECK_DISABLED=1 to disable networking and reminder-state writes.
Installations with the update checker also check for newer stable releases during diagram delivery and can show a reminder. Older installations without the checker need a manual update to gain this feature. You choose whether and when to upgrade; Archify never installs updates automatically.
Use Archify to draw: Browser -> API -> Redis cache -> PostgreSQL fallback.
For source evidence, open a repository and ask:
Analyze this repository, then use archify to create a high-level runtime architecture diagram.
Show 8–12 core components, one primary path, external dependencies, and trust boundaries.
Put supporting detail in cards instead of adding more edges.
Continue with focused requests such as add Redis, move auth to the left, or highlight the rollback path. Archify keeps the typed source available for targeted iteration.
No reports for macOS yet.
Claude reads the 9 key files and writes a step-by-step guide for macOS. Once written, it's saved for everyone.