【Star us! ⭐】 A declarative language that compiles to professional SVG floor plans — like Typst/LaTeX, but for architecture. Built for AI agents: deterministic output, JSON diagnostics that carry their own fix, and a describe/lint channel that verifies a plan against its brief without rendering an image. Zero-dependency TypeScript.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http
verified
reported
listed in the official MCP registry counts 9 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
compile
-
complete
-
describe
-
fix
-
lint
-
repair
-
score
-
suggest
-
validate
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit f16105e · analyzer v33 · 3d ago
skills & prompt files 9
- agent-rules ChanMeng666-archlang-f16105e/.claude/agents/arch-author.md
- agent-rules ChanMeng666-archlang-f16105e/.claude/commands/new-element.md
- agent-rules ChanMeng666-archlang-f16105e/.claude/commands/regen.md
- agent-rules ChanMeng666-archlang-f16105e/.claude/commands/release-check.md
- agent-rules ChanMeng666-archlang-f16105e/.claude/commands/verify-loop.md
- agent-rules ChanMeng666-archlang-f16105e/AGENTS.md
- agent-rules ChanMeng666-archlang-f16105e/CLAUDE.md
- skill ChanMeng666-archlang-f16105e/SKILL.md
- agent-rules ChanMeng666-archlang-f16105e/docs-site/agents.md
danger signals3
- dynamic code execution eval() ChanMeng666-archlang-f16105e/src/registry.ts :60
eval(e: Expr): number; - dynamic code execution new Function() ChanMeng666-archlang-f16105e/test/arch-highlight.test.ts :30
const mod = new Function(`${GENERATED.replace(/^export /gm, "")}\nreturn { highlightArch, TOKEN_CLASSES };`)() as { - dynamic code execution new Function() ChanMeng666-archlang-f16105e/test/share-codec.test.ts :130
const run = new Function("source", `return (async () => {${body}})();`) as (s: { value: string }) => Promise<string>;
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 459
filesystem 148
- fs ChanMeng666-archlang-f16105e/bench/compare.mjs :14
import { readFileSync, writeFileSync, existsSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/bench/run.ts :17
import { readFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/dataset/generate.ts :14
import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/docs-site/.vitepress/config.ts :4
import { readdirSync, readFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/docs-site/e2e/archlive.spec.ts :24
import { readFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/docs-site/e2e/fixtures.ts :13
import { readdirSync, readFileSync, statSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/docs-site/e2e/homepage-links.spec.ts :20
import { readFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/docs-site/sync-docs.mjs :12
import { copyFileSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/editors/vscode/copy-assets.mjs :6
import { copyFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/editors/vscode/esbuild.mjs :7
import { rmSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/editors/vscode/resolve-core.mjs :35
import { existsSync, readFileSync, realpathSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/editors/vscode/test/lockstep.test.ts :30
import { readFileSync } from "node:fs";
show 28 more
- fs (weak) ChanMeng666-archlang-f16105e/editors/vscode/test/stdio.test.ts :27
import { existsSync, readFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/editors/vscode/test/wrong-core.test.ts :18
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/eval/fidelity-run.ts :27
import { writeFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/eval/fidelity.ts :53
import { readFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/eval/g1/baseline-accuracy.ts :26
import { readFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/eval/g1/generate.ts :25
import { mkdirSync, writeFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/eval/l2-run.ts :24
import { writeFileSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/eval/run.ts :30
import { readFileSync, writeFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/packages/mcp/scripts/check-dist-resources.mjs :20
import { readFileSync, existsSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/packages/mcp/scripts/copy-resources.mjs :12
import { copyFileSync, mkdirSync } from "node:fs"; - fs ChanMeng666-archlang-f16105e/packages/mcp/src/server.ts :13
import { existsSync, readFileSync, realpathSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/packages/mcp/test/lockstep.test.ts :18
import { readFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/packages/mcp/test/resources.test.ts :17
import { readFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/playground/e2e/shared-notice.spec.ts :1
import { readFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/playground/scripts/gen-static.mjs :40
import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/changelog-section.mjs :19
import { readFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/check-test-wiring.mjs :39
import { readFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/coverage-zero-report.mjs :28
import { readFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/gen-cli-reference.ts :15
import { writeFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/gen-error-codes.ts :9
import { writeFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/gen-example-svgs.ts :31
import { readFileSync, writeFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/gen-gbnf.ts :48
import { writeFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/gen-grammars.ts :14
import { writeFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/gen-intent-schema.ts :11
import { writeFileSync, mkdirSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/gen-llm-spec.ts :18
import { readFileSync, writeFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/gen-llms-full.ts :18
import { readFileSync, writeFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/gen-permalink.mjs :18
import { readFileSync } from "node:fs"; - fs (weak) ChanMeng666-archlang-f16105e/scripts/gen-plan-schema.ts :11
import { writeFileSync, mkdirSync } from "node:fs";
108 more not shown — this panel samples each group; the count above is the real total.
shell / exec 32
- shell ChanMeng666-archlang-f16105e/docs-site/sync-docs.mjs :11
import { execFileSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/editors/vscode/test/stdio.test.ts :26
import { spawn } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/scripts/check-drift.ts :11
import { execSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/scripts/check-test-wiring.mjs :38
import { execFileSync } from "node:child_process"; - shell ChanMeng666-archlang-f16105e/src/backends/svg.ts :300
// `$'`, `` $` `` and `$1` inside a replacement string as substitution patterns, and - shell ChanMeng666-archlang-f16105e/src/cli/serialize.ts :11
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/axes.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-batch.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-commands.test.ts :1
import { spawn, spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-context.test.ts :13
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-fix-backup.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-fix-suggest.test.ts :1
import { spawnSync } from "node:child_process";
show 20 more
- shell (weak) ChanMeng666-archlang-f16105e/test/cli-help.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-human-fix.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-intent.test.ts :4
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-levels.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-narrow.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-preview.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli-structured.test.ts :4
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/cli.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/curves.test.ts :2
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/docs-fences.test.ts :31
import { execFileSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/docs-page-meta.test.ts :31
import { execFileSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/docs-sync-list.test.ts :29
import { execFileSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/docs-table-pipes.test.ts :25
import { execFileSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/indexnow-script.test.ts :17
import { execFileSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/iso-cli.test.ts :33
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/lint-file-provenance.test.ts :16
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/markdown.test.ts :1
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/plan-a11y.test.ts :125
it("survives a label that looks like a replacement pattern ($&, $', $`, $1)", () => { - shell (weak) ChanMeng666-archlang-f16105e/test/share-codec.test.ts :29
import { spawnSync } from "node:child_process"; - shell (weak) ChanMeng666-archlang-f16105e/test/zones.test.ts :2
import { spawnSync } from "node:child_process";
network 5
- net ChanMeng666-archlang-f16105e/eval/g1/generate.ts :133
const res = await fetch("https://api.openai.com/v1/chat/completions", { - net ChanMeng666-archlang-f16105e/eval/l2-run.ts :97
res = await fetch("https://api.openai.com/v1/chat/completions", { - net ChanMeng666-archlang-f16105e/eval/run.ts :328
const res = await fetch("https://api.anthropic.com/v1/messages", { - net (weak) ChanMeng666-archlang-f16105e/scripts/indexnow.mjs :162
const res = await fetch(url, { ...init, signal: controller.signal }); - net (weak) ChanMeng666-archlang-f16105e/scripts/smoke.mjs :172
const res = await fetch(url, { redirect: "follow", headers: { "user-agent": "archlang-smoke/1" } });
secrets 4
- secrets ChanMeng666-archlang-f16105e/eval/g1/generate.ts :135
headers: { authorization: `Bearer ${process.env.OPENAI_API_KEY}`, "content-type": "application/json" }, - secrets ChanMeng666-archlang-f16105e/eval/l2-run.ts :88
const key = process.env.OPENAI_API_KEY; - secrets ChanMeng666-archlang-f16105e/eval/run.ts :293
const hasOpenAI = Boolean(process.env.OPENAI_API_KEY); - secrets (weak) ChanMeng666-archlang-f16105e/test/indexnow-script.test.ts :112
const { INDEXNOW_KEY: _stripped, ...env } = process.env;
tool registrations 9
- compile ChanMeng666-archlang-f16105e/packages/mcp/src/server.ts :131
- describe ChanMeng666-archlang-f16105e/packages/mcp/src/server.ts :202
- lint ChanMeng666-archlang-f16105e/packages/mcp/src/server.ts :216
- validate ChanMeng666-archlang-f16105e/packages/mcp/src/server.ts :230
- score ChanMeng666-archlang-f16105e/packages/mcp/src/server.ts :299
- repair ChanMeng666-archlang-f16105e/packages/mcp/src/server.ts :326
- fix ChanMeng666-archlang-f16105e/packages/mcp/src/server.ts :340
- suggest ChanMeng666-archlang-f16105e/packages/mcp/src/server.ts :387
- complete ChanMeng666-archlang-f16105e/packages/mcp/src/server.ts :398
install hooks 2
- prepublishOnly ChanMeng666-archlang-f16105e/package.json :104
npm run build && npm run test - prepack ChanMeng666-archlang-f16105e/packages/mcp/package.json :42
npm run build
declared dependencies 17
- @biomejs/biome@^2.5.2
- @playwright/test@^1.62.1
- @types/node@^22.20.0
- @types/pngjs@^6.0.5
- @vitest/coverage-v8@^2.1.9
- clipper2-wasm@0.4.0
- fast-check@^4.8.0
- pixelmatch@^7.2.0
- pngjs@^7.0.0
- tsup@^8.3.5
- tsx@^4.19.2
- typescript@^5.7.2
show 5 more
- vitest@^2.1.8
- vscode-oniguruma@^2.0.1
- vscode-textmate@^9.3.2
- @resvg/resvg-js@2.6.2
- pdfkit@^0.15.2