Authors and structures professional-grade agent skills following the agentskills.io spec. Use when creating new skill directories, drafting procedural instructions, or optimizing metadata for discoverability. Don't use for general documentation, non-agentic library code, or README files.
Instructions for plainlang/plain-forge, covering claude.md, what this repo is, commands, the installer cli (bin/cli.mjs) and editing forge/ content (skills + rules).
Instructions for plainlang/plain-forge, covering claude.md, what this repo is, commands, the installer cli (bin/cli.mjs) and editing forge/ content (skills + rules).
Add acceptance tests under a functional spec in a plain spec file. Use when the user wants to add verification criteria for a specific functional spec, or after adding a functional spec that needs testable success criteria.
Add a concept to the definitions section of a plain spec file. Use when the user wants to define a new concept, entity, or domain term in a .plain file.
End-to-end feature addition on an existing plain project: runs a short feature-intent interview, then takes the confirmed request and, one question at a time, incrementally writes plain specs (concepts, implementation reqs, functional specs, test reqs, acceptance tests) to disk — asking, authoring, and reviewing per…
Add a single functional spec to the functional specs section of a plain spec file. Use whenever exactly one new functional spec is being added — whether the user explicitly asks, or another skill/workflow (e.g. forge-plain, add-feature) needs to author a new functional spec. Every new entry under functional specs must…
Add multiple functional specs to the functional specs section of a plain spec file in a single batch. Use whenever more than one new functional spec is being added — whether the user explicitly asks, or another skill/workflow (e.g. forge-plain, add-feature) needs to author several specs in one pass. Bulk-writing or…
Add an implementation requirement to the implementation reqs section of a plain spec file. Use when the user wants to add non-functional requirements like technology choices, architectural constraints, coding standards, data formats, error handling strategies, or any HOW-to-build guidance to a .plain file.
Add a linked resource (external file reference) to a plain spec. Use when the user wants to reference a JSON schema, API spec, data file, or other external file from within a functional spec, definition, or implementation requirement.
Create or include a Liquid template in a plain spec file using {% include %} syntax. Use when the same spec content needs to be reused across multiple .plain files with different parameters.
Add a test requirement to the test reqs section of a plain spec file. Use when the user wants to specify conformance testing instructions like test frameworks, execution methods, or testing constraints in a .plain file.
Analyze two functional specs from a plain spec file to determine if they conflict. Use when the user wants to check whether two specific functional requirements are compatible, or when debugging a suspected conflict between two specs.
Analyze a batch of functional specs from a plain spec file to determine which pairs conflict. Replaces the pair-by-pair analyze-2-func-specs flow when a caller wants to check many specs at once (e.g. a new spec against every existing spec, or a freshly inserted batch against itself).
Analyze a functional spec to determine if it is too complex for the renderer. A spec is too complex if it would produce more than 200 lines of code changes. Use after drafting a new functional spec (during add-functional-spec, or per spec during add-functional-specs) to verify it fits within the complexity limit…
Break down a functional spec that is too complex into smaller specs that each imply ≤ 200 lines of code. Use when analyze-if-func-spec-too-complex flags a spec as TOO COMPLEX, or when a spec is suspected of being too large.
Reports whether the plain-forge installation on this machine is current. Enumerates every agent directory plain-forge can install into — project scope and global scope, across all supported agent layouts — reads the installed version from each .plain-forge/manifest.json, resolves the latest published version from the…
Read a plain project — its .plain files, testscripts/, config.yaml(s), and resources/ — and determine every command-line tool, runtime, package manager, and external service the project needs on the host machine. Probe the host for each one, then emit a PASS / FAIL report listing what's installed (with versions)…
Gather concept definitions scattered across multiple modules into a single shared import module in template/. Removes the moved definitions from the original modules and adds the new import to their frontmatter. Use when concepts are duplicated or spread across modules and should be centralized.
Create a plain import module that provides shared definitions, implementation reqs, and test reqs for other modules to import. Use when the user wants to create a new .plain file that contains only definitions, implementation reqs, and/or test reqs — no functional specs.
Create a plain module that uses requires to depend on another module in the build chain. Use when the user wants to create a new .plain file that builds on top of a previously built module, inheriting its functional specs and generated code as a starting point.
Investigate a bug observed in the running application by reading the generated code in plainmodules/, tracing the issue back to the specs, and fixing only the .plain files. Generated code is never modified. Use when the user reports unexpected behavior, visual glitches, crashes, or incorrect logic in the app.
End-to-end plain spec authoring workflow: a short intent interview followed by a gated, one-question-at-a-time interview (product, tech stack, testing) that writes complete .plain specification files to disk incrementally, reviews each addition, and validates the specs with a dry-run before handoff. Use when the user…
Implement a conformance-test runner script (Bash on macOS/Linux, PowerShell on Windows) for an arbitrary programming language, in one of two variants: install-inline (when no prepareenvironment script exists) or activate-only (when one does). Use when the user wants to add a conformance-test runner for a new language…