@ascribed/cli
v0.4.5
Published
A toolchain for documentation written as code. This package installs its command, ascribe.
Maintainers
Readme
@ascribed/cli
The ascribe command for Ascribe: it checks, builds, and formats a documentation project, and runs the language server editors use.
npm install --save-dev @ascribed/cli
npx ascribe check
npx ascribe build
npx ascribe fmt --checkThe command reference covers every command, option, output, and exit code, and Getting started sets up a project.
The skill
The package ships the Ascribe skill, in the Agent Skills format, as skills/ascribe/, for tools that install skills from packages. It teaches an AI coding agent to check and fix Ascribe pages. In a project, npx ascribe agents sync writes it where agents look, with the project's own rules: see Agents.
The package doesn't carry an index of Ascribe's docs, which ascribe agents index writes for a product's AGENTS.md. An agent reads a package's README only when it's sent there, and what Ascribe's agents need is the skill and the rules sync writes, which they load on their own, and the commands that answer questions about the project in front of them.
Platforms
The package is a small launcher, plus one optional dependency per platform that holds the native binary: macOS on Apple silicon, Linux (arm64 and x64, glibc 2.28 or later), and Windows (x64). Your package manager installs only your platform's. There's no install script. Intel Macs aren't supported.
If ascribe reports that it can't find its native package, your package manager left out optional dependencies (for example, npm install --omit=optional): reinstall with them. The error names the package and platform it looked for.
Finding the binary from code
Integrations can find the native executable without running the launcher:
import { resolveBinary } from "@ascribed/cli/binary";
const executable = resolveBinary(); // the absolute path of this platform's ascriberesolveBinary({ platform, arch }) resolves another platform's, for packaging tests.
Development
The platform packages are in platforms/. Their binaries aren't in the repository: a release stages each one before packing (scripts/release/pack.ts). To try the launcher with a local build, stage it by hand:
cargo build -p ascribe-cli
ASCRIBE_BIN_DARWIN_ARM64=target/debug/ascribe pnpm --filter @ascribed/cli stage-native darwin-arm64The variables are ASCRIBE_BIN_DARWIN_ARM64, ASCRIBE_BIN_LINUX_ARM64, ASCRIBE_BIN_LINUX_X64, and ASCRIBE_BIN_WIN32_X64. Without a target, stage-native stages all four and needs all four variables.
