Repository navigation
v0.2.0
Upgrading:
- Move the hooks'
rev, the marketplace'srefand the plugins to this release; in Claude Code, add the marketplace again at the tag with--scope projectand runclaude plugin update, and never remove the marketplace, which uninstalls the plugins for every project on the machine. Install gives the commands. - Copy the
landskill'sscripts/DeclManifest.leanover the workspace's copy: its--ownnow defaults to every root of the workspace's own packages, so the regenerated manifests can gainhypothesisrows for conditions defined in another package. Regenerate and commit the manifests before runningformal hypothesesagainst an older revision. - With
[packages]bound,formal checknow reads the tree, and theformal-checkhook fails on a stale manifest, an umbrella that leaves a module out, a module under a root[packages]does not bind, an untracked file under a root that git does not ignore, and an import against[workspace] package_order; regenerate or fix, or setumbrellas = falsewhere an umbrella leaves modules out on purpose. - For the new gates, add
[anchors],[register]and the[documents]allowlists toformal.tomlby hand, as The bindings files shows them (formal initleaves an existing file alone), then theformal-cite,formal-anchorsandformal-registerhooks.
[handoff] records still reads a string, and the log's archive defaults to a directory beside the log.
The formal plugin:
formal citechecks that every declaration name the documents cite resolves in the manifests, and that none is private only, retired yet present, or an API-docs link to a module not in the tree (The checks has the resolution order).formal anchorschecks every[Key] §N,[Key] Theorem N.Mand[Key] Appendix Xof the Lean files against the numbered headings, bold statements and appendices of the document the key is bound to.formal registerchecks that the tracked files that ship carry none of the bound pattern classes, matched after the sanctioned expressions are cut from each line; an empty scope fails.formal hypothesesfails where a public theorem shipped at a base revision, or listed in a--baselinefile, gained a named condition;--updatelocks a discharge and a new declaration into the baseline and never a growth, and a manifest with nohypothesisrow is reported INERT, with exit 0 and nothing compared.formal witnessesreports, by module, the public theorems with two or more named conditions and no_nonvacuouswitness.- The three gates are hooks:
formal-cite,formal-anchorsandformal-register. formal checkreads the tree: the manifests' modules against the files under each root, each root's umbrella, and the import direction ofpackage_order.- The handback compares each manifest with its own package's edited modules, and an edited umbrella of imports and guards needs no regenerated manifest.
- The handoff check reads a record named by any of
[handoff] records' path prefixes, a file ofmeta_namesor a reference key ofkey_patterns. formal probeandformal initread a lakefile under a workspace, or one it requires by path, as a package of it: one generator in the workspace, one manifest and command per package,[packages]and the package order filled; the probe marks an item not written yet--.DeclManifest.lean's--owndefaults to every root built in the workspace's own packages, so a condition defined in another package is no longer dropped; it prints the roots it took.
The research plugin:
flow log add FILEwrites an entry at the top of the log, reflowed and linted as a record's write is;flow log archive --before DATEmoves the older entries verbatim into one file per month in[paths] log_archive, each link definition going with every file that uses it, and leaves a pointer under the log's title.flow state --check --owner Ochecks what a machine can see of a session's close: the inbox emptied, the active tasks in O's hand, the log's top entry dated today, every changed record named; it exits 2 for a part it could not decide.flow reflow --check PATH…holds the project's other prose to one sentence per line, andflow reflow --as DEST DRAFTchecks a draft before it is placed, reporting only the markdownlint violations it would add.library citecheck [DOC…]checks that every author-year citation in a document has an entry in its own references, by first author and date, and that every entry is cited.- An internal document's card takes its key from its file's stem (
reports/review-1.mdisreview-1); a card already written keeps its key. flow refine --body FILEsays that the body went to the question and namesflow task --question Q --body FILEfor a task's own body.- The built-in reflow keeps a short bold label such as
**State.**or**Proposition 5.3 (Jen 1990).**with the sentence it opens, keeps a Markdown hard break, and reads code fences by CommonMark's rule, aslibrary citecheckdoes.
The skills and the documentation:
landreads a guard pair one guard at a time, splits a read-back packet too large for one reader, and sweeps the proof paragraph's "the only named hypothesis" sentence;handofffalls back to a general-purpose subagent where the prover agent is not loaded and keeps the task's id out of the prompt; the workspace template gains the dependency and toolchain bump procedure and the nested-package trap.methodgains Terminology, Documents (with a register test for a project that has none), Working with the owner, Evidence rules andreferences/reviews.md;flowsays a design record is never authority and gainsreferences/closing.mdfor a session's close;debugreads a background command's exit code from the tool.- Install says how a Claude Code project moves its pin without removing the marketplace, as tested with Claude Code 2.1.310, and how sessions sharing a tree keep the hooks' stash from reverting each other's files.