Create an independent package
--template stateless for a Tool that computes a response without storing
state. The default stateful template supplies read/write behavior and a missing
record error. These are starting points, not limits on the operations you can add.
The destination must be new or empty. Nothing is installed or executed by this
command. The generated package contains:
package.json, then run
npm run validate and npm test. The generated target is an ordinary Node
script testing the Tool, not an LLM agent. No build step is required. Until
Firedrill packages are published, install reviewed local package archives instead
of assuming the versions are available from npm.
Change UNLICENSED to a license you choose and add the corresponding license file
before distributing the package. Firedrill does not require independently
maintained Tools to use its own license. Include your license in the package’s
files list. A Firedrill-maintained repository documents its contribution terms
beside its source.
Package contract
The ordinary npmpackage.json identifies the declaration. It must export
./package.json, have a valid npm name and version, and include these fields:
starter and portable conformance are optional. The Tool declaration’s manifest
version must match the npm package version. lifecycle can be active,
deprecated, or revoked; revoked packages cannot be selected. Declaration,
behavior, starter, optional app assets, and conformance files must be packaged
inside the package. They must not depend on a framework source checkout.
The machine-readable metadata contract ships as
@firedrill/compiler/schema/installed-tool-package; the declaration contract is
@firedrill/compiler/schema/tool-source. The installed schemas work without a
documentation server. See compatibility for engine/version
rules and Tool apps for optional browser interfaces sharing the
same state.
The older string form of firedrill.conformance names an author-repository suite
only. It is accepted for compatibility but does not mean consumers can run a
suite the package did not ship. Use the versioned object above for portable
conformance.
Share and consume
Pack or publish only source you have reviewed: npm 10 can run a local package’sprepare hook during npm pack despite --ignore-scripts. For a third-party
local or Git Tool, firedrill tool add <source> --install stages a scriptless
copy before packing and installation. Review the file list before sharing.
Publish from your own registry or repository when ready; publishing is not part
of Tool creation. Never include
.firedrill/, dependencies, credentials, private evidence, or test transcripts.
An installed package is selected with its actual package name:
Independently check an installed Tool
suiteSource: "repository" or "package" so the source of the checks is clear.
A matching suite in the consumer project takes precedence. An explicit
--suite always means that consumer suite; a miss is an error, not a fallback.
When no consumer suite is selected, portable package conformance runs from a
bounded source copy under the consumer’s .firedrill/tool-tests/. Installed
dependencies are never modified. The suite must be a self-contained project
with one Tool, no external toolPackages, and the exact installed Tool contract,
behavior, and app assets. A substitute implementation is rejected. Symlinks and
source copies exceeding 4096 entries, 32 directory levels, or 32 MiB are rejected.
Dependencies, Git metadata, generated state, and common secret files are excluded
from the copy. Conformance targets should use packaged source and Node built-ins;
no package install or build scripts are run during this process.
These are author-supplied tests, not independent certification that the Tool
perfectly reproduces a real service. State precise supported operations and known
limits in your README. Conformance targets and Tool behavior execute with local
authority: review them before running, just as you would a test dependency.