@spec-engine/spec-engine 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +67 -0
- package/dist/cli.js +11 -0
- package/dist/docs/404.html +41 -0
- package/dist/docs/CNAME +1 -0
- package/dist/docs/_astro/Code.DfIJP77p.css +1 -0
- package/dist/docs/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.hwBsy0Mo.js +1 -0
- package/dist/docs/_astro/Search.astro_astro_type_script_index_0_lang.lq3t8uE2.js +1 -0
- package/dist/docs/_astro/TableOfContents.astro_astro_type_script_index_0_lang.FuRcXuRY.js +1 -0
- package/dist/docs/_astro/common.xlUlWolS.css +1 -0
- package/dist/docs/_astro/ec.0vx5m.js +3 -0
- package/dist/docs/_astro/ec.v4551.css +1 -0
- package/dist/docs/_astro/page.B_tncCx8.js +1 -0
- package/dist/docs/_astro/print.DNXP8c50.css +1 -0
- package/dist/docs/_astro/spec-mark-black.ZCN22lJi.svg +7 -0
- package/dist/docs/_astro/spec-mark-white.DJBFLLUP.svg +7 -0
- package/dist/docs/_astro/ui-core.C8327L_n.js +2 -0
- package/dist/docs/agent-reference/index.html +108 -0
- package/dist/docs/architecture/index.html +81 -0
- package/dist/docs/checks/index.html +267 -0
- package/dist/docs/commands/index.html +228 -0
- package/dist/docs/favicon-16.png +0 -0
- package/dist/docs/favicon-180.png +0 -0
- package/dist/docs/favicon-192.png +0 -0
- package/dist/docs/favicon-32.png +0 -0
- package/dist/docs/favicon-512.png +0 -0
- package/dist/docs/favicon.ico +0 -0
- package/dist/docs/favicon.svg +8 -0
- package/dist/docs/format/index.html +172 -0
- package/dist/docs/getting-started/index.html +92 -0
- package/dist/docs/guides/adoption/index.html +84 -0
- package/dist/docs/guides/platform-setup/index.html +95 -0
- package/dist/docs/guides/single-repo/index.html +82 -0
- package/dist/docs/index.html +152 -0
- package/dist/docs/maskable-512.png +0 -0
- package/dist/docs/og-spec-engine-docs.png +0 -0
- package/dist/docs/og-spec-engine.png +0 -0
- package/dist/docs/overview/index.html +124 -0
- package/dist/docs/pagefind/fragment/en_3f97d08.pf_fragment +0 -0
- package/dist/docs/pagefind/fragment/en_51433aa.pf_fragment +0 -0
- package/dist/docs/pagefind/fragment/en_629887a.pf_fragment +0 -0
- package/dist/docs/pagefind/fragment/en_6339f38.pf_fragment +0 -0
- package/dist/docs/pagefind/fragment/en_74b2c3a.pf_fragment +0 -0
- package/dist/docs/pagefind/fragment/en_79e59c8.pf_fragment +0 -0
- package/dist/docs/pagefind/fragment/en_a4de4f3.pf_fragment +0 -0
- package/dist/docs/pagefind/fragment/en_ae342c4.pf_fragment +0 -0
- package/dist/docs/pagefind/fragment/en_b571467.pf_fragment +0 -0
- package/dist/docs/pagefind/fragment/en_cc9f632.pf_fragment +0 -0
- package/dist/docs/pagefind/fragment/en_dc8d1bd.pf_fragment +0 -0
- package/dist/docs/pagefind/index/en_4f59892.pf_index +0 -0
- package/dist/docs/pagefind/pagefind-component-ui.css +1509 -0
- package/dist/docs/pagefind/pagefind-component-ui.js +56 -0
- package/dist/docs/pagefind/pagefind-entry.json +1 -0
- package/dist/docs/pagefind/pagefind-highlight.js +1070 -0
- package/dist/docs/pagefind/pagefind-modular-ui.css +214 -0
- package/dist/docs/pagefind/pagefind-modular-ui.js +8 -0
- package/dist/docs/pagefind/pagefind-ui.css +1 -0
- package/dist/docs/pagefind/pagefind-ui.js +2 -0
- package/dist/docs/pagefind/pagefind-worker.js +6 -0
- package/dist/docs/pagefind/pagefind.en_c8da4a195d.pf_meta +0 -0
- package/dist/docs/pagefind/pagefind.js +6 -0
- package/dist/docs/pagefind/wasm.en.pagefind +0 -0
- package/dist/docs/pagefind/wasm.unknown.pagefind +0 -0
- package/dist/docs/site.webmanifest +25 -0
- package/dist/docs/sitemap-0.xml +1 -0
- package/dist/docs/sitemap-index.xml +1 -0
- package/dist/docs/tags/index.html +112 -0
- package/dist/impl.js +11050 -0
- package/package.json +48 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
<!DOCTYPE html><html lang="en" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-hke2hksx"> <head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Commands | Spec Engine</title><link rel="canonical" href="https://docs.spec-engine.dev/commands/"/><link rel="sitemap" href="/sitemap-index.xml"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="true"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Archivo:wght@600;700;800;900&family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600&display=swap"/><link rel="icon" href="/favicon.ico" sizes="any"/><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png"/><link rel="apple-touch-icon" sizes="180x180" href="/favicon-180.png"/><link rel="manifest" href="/site.webmanifest"/><link rel="shortcut icon" href="/favicon.svg" type="image/svg+xml"/><meta name="generator" content="Astro v6.4.8"/><meta name="generator" content="Starlight v0.40.0"/><meta property="og:title" content="Commands"/><meta property="og:type" content="article"/><meta property="og:url" content="https://docs.spec-engine.dev/commands/"/><meta property="og:locale" content="en"/><meta property="og:description" content="Complete CLI command reference"/><meta property="og:site_name" content="Spec Engine"/><meta name="twitter:card" content="summary_large_image"/><meta name="description" content="Complete CLI command reference"/><meta name="theme-color" content="#0F1214"/><meta property="og:image" content="https://docs.spec-engine.dev/og-spec-engine-docs.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta name="twitter:image" content="https://docs.spec-engine.dev/og-spec-engine-docs.png"/><script>
|
|
2
|
+
window.StarlightThemeProvider = (() => {
|
|
3
|
+
const storedTheme =
|
|
4
|
+
typeof localStorage !== 'undefined' && localStorage.getItem('starlight-theme');
|
|
5
|
+
const theme =
|
|
6
|
+
storedTheme ||
|
|
7
|
+
(window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark');
|
|
8
|
+
document.documentElement.dataset.theme = theme === 'light' ? 'light' : 'dark';
|
|
9
|
+
return {
|
|
10
|
+
updatePickers(theme = storedTheme || 'auto') {
|
|
11
|
+
document.querySelectorAll('starlight-theme-select').forEach((picker) => {
|
|
12
|
+
const select = picker.querySelector('select');
|
|
13
|
+
if (select) select.value = theme;
|
|
14
|
+
/** @type {HTMLTemplateElement | null} */
|
|
15
|
+
const tmpl = document.querySelector(`#theme-icons`);
|
|
16
|
+
const newIcon = tmpl && tmpl.content.querySelector('.' + theme);
|
|
17
|
+
if (newIcon) {
|
|
18
|
+
const oldIcon = picker.querySelector('svg.label-icon');
|
|
19
|
+
if (oldIcon) {
|
|
20
|
+
oldIcon.replaceChildren(...newIcon.cloneNode(true).childNodes);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
})();
|
|
27
|
+
</script><template id="theme-icons"><svg aria-hidden="true" class="light astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z"/></svg><svg aria-hidden="true" class="dark astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z"/></svg><svg aria-hidden="true" class="auto astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg></template><link rel="stylesheet" href="/_astro/print.DNXP8c50.css" media="print"><link rel="stylesheet" href="/_astro/common.xlUlWolS.css"><link rel="stylesheet" href="/_astro/Code.DfIJP77p.css"><script type="module" src="/_astro/page.B_tncCx8.js"></script></head> <body class="astro-hke2hksx"> <a href="#_top" class="astro-ln4bs55d">Skip to content</a> <div class="page sl-flex astro-4azfgxa5"> <header class="header astro-4azfgxa5"><div class="header astro-huokaw3t"> <div class="title-wrapper sl-flex astro-huokaw3t"> <a href="/" class="site-title sl-flex astro-pf7uwcts"> <img class="light:sl-hidden print:hidden astro-pf7uwcts" alt="Spec Engine" src="/_astro/spec-mark-white.DJBFLLUP.svg" width="512" height="512"> <img class="dark:sl-hidden print:block astro-pf7uwcts" alt="Spec Engine" src="/_astro/spec-mark-black.ZCN22lJi.svg" width="512" height="512"> <span class="astro-pf7uwcts" translate="no"> Spec Engine </span> </a> </div> <div class="sl-flex print:hidden astro-huokaw3t"> <site-search class="astro-huokaw3t astro-6oz6ysne" data-translations="{"placeholder":"Search"}"> <button data-open-modal disabled aria-label="Search" aria-keyshortcuts="Control+K" class="astro-6oz6ysne"> <svg aria-hidden="true" class="astro-6oz6ysne astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21.71 20.29 18 16.61A9 9 0 1 0 16.61 18l3.68 3.68a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.39ZM11 18a7 7 0 1 1 0-14 7 7 0 0 1 0 14Z"/></svg> <span class="sl-hidden md:sl-block astro-6oz6ysne" aria-hidden="true">Search</span> <kbd class="sl-hidden md:sl-flex astro-6oz6ysne" style="display: none;"> <kbd class="astro-6oz6ysne">Ctrl</kbd><kbd class="astro-6oz6ysne">K</kbd> </kbd> </button> <dialog style="padding:0" aria-label="Search" class="astro-6oz6ysne"> <div class="dialog-frame sl-flex astro-6oz6ysne"> <button data-close-modal class="sl-flex md:sl-hidden astro-6oz6ysne"> Cancel </button> <div class="search-container astro-6oz6ysne"> <div id="starlight__search" class="astro-6oz6ysne"></div> </div> </div> </dialog> </site-search> <script>
|
|
28
|
+
(() => {
|
|
29
|
+
const openBtn = document.querySelector('button[data-open-modal]');
|
|
30
|
+
const shortcut = openBtn?.querySelector('kbd');
|
|
31
|
+
if (!openBtn || !(shortcut instanceof HTMLElement)) return;
|
|
32
|
+
const platformKey = shortcut.querySelector('kbd');
|
|
33
|
+
if (platformKey && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)) {
|
|
34
|
+
platformKey.textContent = '⌘';
|
|
35
|
+
openBtn.setAttribute('aria-keyshortcuts', 'Meta+K');
|
|
36
|
+
}
|
|
37
|
+
shortcut.style.display = '';
|
|
38
|
+
})();
|
|
39
|
+
</script> <script type="module" src="/_astro/Search.astro_astro_type_script_index_0_lang.lq3t8uE2.js"></script> </div> <div class="sl-hidden md:sl-flex print:hidden right-group astro-huokaw3t"> <div class="sl-flex social-icons astro-huokaw3t"> <a href="https://github.com/spec-engine/spec-engine" rel="me" class="sl-flex astro-7c53pyad"><span class="sr-only astro-7c53pyad">GitHub</span><svg aria-hidden="true" class="astro-7c53pyad astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 .3a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57L9 21.07c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .3Z"/></svg></a> </div> <starlight-theme-select> <label style="--sl-select-width: 6.25em" class="astro-xrbm3f6n"> <span class="sr-only astro-xrbm3f6n">Select theme</span> <svg aria-hidden="true" class="icon label-icon astro-xrbm3f6n astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg> <select autocomplete="off" class="astro-xrbm3f6n"> <option value="dark" class="astro-xrbm3f6n">Dark</option><option value="light" class="astro-xrbm3f6n">Light</option><option value="auto" selected class="astro-xrbm3f6n">Auto</option> </select> <svg aria-hidden="true" class="icon caret astro-xrbm3f6n astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg> </label> </starlight-theme-select> <script>
|
|
40
|
+
StarlightThemeProvider.updatePickers();
|
|
41
|
+
</script> <script type="module">const r="starlight-theme",o=e=>e==="auto"||e==="dark"||e==="light"?e:"auto",c=()=>o(typeof localStorage<"u"&&localStorage.getItem(r));function n(e){typeof localStorage<"u"&&localStorage.setItem(r,e==="light"||e==="dark"?e:"")}const l=()=>matchMedia("(prefers-color-scheme: light)").matches?"light":"dark";function t(e){StarlightThemeProvider.updatePickers(e),document.documentElement.dataset.theme=e==="auto"?l():e,n(e)}matchMedia("(prefers-color-scheme: light)").addEventListener("change",()=>{c()==="auto"&&t("auto")});class s extends HTMLElement{constructor(){super(),t(c()),this.querySelector("select")?.addEventListener("change",a=>{a.currentTarget instanceof HTMLSelectElement&&t(o(a.currentTarget.value))})}}customElements.define("starlight-theme-select",s);</script> <script type="module">class s extends HTMLElement{constructor(){super();const e=this.querySelector("select");e&&(e.addEventListener("change",t=>{t.currentTarget instanceof HTMLSelectElement&&(window.location.pathname=t.currentTarget.value)}),window.addEventListener("pageshow",t=>{if(!t.persisted)return;const n=e.querySelector("option[selected]")?.index;n!==e.selectedIndex&&(e.selectedIndex=n??0)}))}}customElements.define("starlight-lang-select",s);</script> </div> </div></header> <nav class="sidebar print:hidden astro-4azfgxa5" aria-label="Main"> <starlight-menu-button class="print:hidden astro-5hpi47kq"> <button aria-expanded="false" aria-label="Menu" aria-controls="starlight__sidebar" class="sl-flex md:sl-hidden astro-5hpi47kq"> <svg aria-hidden="true" class="open-menu astro-5hpi47kq astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M3 8h18a1 1 0 1 0 0-2H3a1 1 0 0 0 0 2Zm18 8H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Zm0-5H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Z"/></svg> <svg aria-hidden="true" class="close-menu astro-5hpi47kq astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="m13.41 12 6.3-6.29a1.004 1.004 0 1 0-1.42-1.42L12 10.59l-6.29-6.3a1.004 1.004 0 0 0-1.42 1.42l6.3 6.29-6.3 6.29a1 1 0 0 0 0 1.42.998.998 0 0 0 1.42 0l6.29-6.3 6.29 6.3a.999.999 0 0 0 1.42 0 1 1 0 0 0 0-1.42L13.41 12Z"/></svg> </button> </starlight-menu-button> <script type="module">class s extends HTMLElement{constructor(){super(),this.btn=this.querySelector("button"),this.btn.addEventListener("click",()=>this.toggleExpanded());const t=this.closest("nav");t&&t.addEventListener("keyup",e=>this.closeOnEscape(e))}setExpanded(t){this.setAttribute("aria-expanded",String(t)),document.body.toggleAttribute("data-mobile-menu-expanded",t)}toggleExpanded(){this.setExpanded(this.getAttribute("aria-expanded")!=="true")}closeOnEscape(t){t.code==="Escape"&&(this.setExpanded(!1),this.btn.focus())}}customElements.define("starlight-menu-button",s);</script> <div id="starlight__sidebar" class="sidebar-pane astro-4azfgxa5"> <div class="sidebar-content sl-flex astro-4azfgxa5"> <sl-sidebar-state-persist data-hash="0fmmri7" class="astro-buzsinug"> <script aria-hidden="true">
|
|
42
|
+
(() => {
|
|
43
|
+
try {
|
|
44
|
+
if (!matchMedia('(min-width: 50em)').matches) return;
|
|
45
|
+
/** @type {HTMLElement | null} */
|
|
46
|
+
const target = document.querySelector('sl-sidebar-state-persist');
|
|
47
|
+
const state = JSON.parse(sessionStorage.getItem('sl-sidebar-state') || '0');
|
|
48
|
+
if (!target || !state || target.dataset.hash !== state.hash) return;
|
|
49
|
+
window._starlightScrollRestore = state.scroll;
|
|
50
|
+
customElements.define(
|
|
51
|
+
'sl-sidebar-restore',
|
|
52
|
+
class SidebarRestore extends HTMLElement {
|
|
53
|
+
connectedCallback() {
|
|
54
|
+
try {
|
|
55
|
+
const idx = parseInt(this.dataset.index || '');
|
|
56
|
+
const details = this.closest('details');
|
|
57
|
+
if (details && typeof state.open[idx] === 'boolean') details.open = state.open[idx];
|
|
58
|
+
} catch {}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
} catch {}
|
|
63
|
+
})();
|
|
64
|
+
</script> <ul class="top-level astro-ftvsh3ht"> <li class="astro-ftvsh3ht"> <a href="/overview/" class="large astro-ftvsh3ht"> <span class="astro-ftvsh3ht">Overview</span> </a> </li><li class="astro-ftvsh3ht"> <a href="/getting-started/" class="large astro-ftvsh3ht"> <span class="astro-ftvsh3ht">Getting Started</span> </a> </li><li class="astro-ftvsh3ht"> <a href="/architecture/" class="large astro-ftvsh3ht"> <span class="astro-ftvsh3ht">Architecture</span> </a> </li><li class="astro-ftvsh3ht"> <a href="/commands/" aria-current="page" class="large astro-ftvsh3ht"> <span class="astro-ftvsh3ht">Commands</span> </a> </li><li class="astro-ftvsh3ht"> <a href="/format/" class="large astro-ftvsh3ht"> <span class="astro-ftvsh3ht">SPEC.json Format</span> </a> </li><li class="astro-ftvsh3ht"> <a href="/tags/" class="large astro-ftvsh3ht"> <span class="astro-ftvsh3ht">Tags</span> </a> </li><li class="astro-ftvsh3ht"> <a href="/checks/" class="large astro-ftvsh3ht"> <span class="astro-ftvsh3ht">Integrity Checks</span> </a> </li><li class="astro-ftvsh3ht"> <details open class="astro-ftvsh3ht"> <summary class="astro-ftvsh3ht"> <span class="group-label astro-ftvsh3ht"> <span class="large astro-ftvsh3ht">Guides</span> </span> <svg aria-hidden="true" class="caret astro-ftvsh3ht astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg> </summary> <sl-sidebar-restore data-index="0"></sl-sidebar-restore> <ul class="astro-ftvsh3ht"> <li class="astro-ftvsh3ht"> <a href="/guides/adoption/" class="astro-ftvsh3ht"> <span class="astro-ftvsh3ht">Adoption Guide</span> </a> </li><li class="astro-ftvsh3ht"> <a href="/guides/platform-setup/" class="astro-ftvsh3ht"> <span class="astro-ftvsh3ht">Platform Setup</span> </a> </li><li class="astro-ftvsh3ht"> <a href="/guides/single-repo/" class="astro-ftvsh3ht"> <span class="astro-ftvsh3ht">Single Repo (Rung 1)</span> </a> </li> </ul> </details> </li><li class="astro-ftvsh3ht"> <a href="/agent-reference/" class="large astro-ftvsh3ht"> <span class="astro-ftvsh3ht">Agent Reference</span> </a> </li> </ul> <script aria-hidden="true">
|
|
65
|
+
(() => {
|
|
66
|
+
const scroller = document.getElementById('starlight__sidebar');
|
|
67
|
+
if (!window._starlightScrollRestore || !scroller) return;
|
|
68
|
+
scroller.scrollTop = window._starlightScrollRestore;
|
|
69
|
+
delete window._starlightScrollRestore;
|
|
70
|
+
})();
|
|
71
|
+
</script> </sl-sidebar-state-persist> <div class="md:sl-hidden"> <div class="mobile-preferences sl-flex astro-q2jvmmon"> <div class="social-icons astro-q2jvmmon"> <a href="https://github.com/spec-engine/spec-engine" rel="me" class="sl-flex astro-7c53pyad"><span class="sr-only astro-7c53pyad">GitHub</span><svg aria-hidden="true" class="astro-7c53pyad astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M12 .3a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57L9 21.07c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .3Z"/></svg></a> </div> <starlight-theme-select> <label style="--sl-select-width: 6.25em" class="astro-xrbm3f6n"> <span class="sr-only astro-xrbm3f6n">Select theme</span> <svg aria-hidden="true" class="icon label-icon astro-xrbm3f6n astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z"/></svg> <select autocomplete="off" class="astro-xrbm3f6n"> <option value="dark" class="astro-xrbm3f6n">Dark</option><option value="light" class="astro-xrbm3f6n">Light</option><option value="auto" selected class="astro-xrbm3f6n">Auto</option> </select> <svg aria-hidden="true" class="icon caret astro-xrbm3f6n astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"><path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z"/></svg> </label> </starlight-theme-select> <script>
|
|
72
|
+
StarlightThemeProvider.updatePickers();
|
|
73
|
+
</script> </div> </div> </div> </div> </nav> <div class="main-frame astro-4azfgxa5"> <script type="module">const a=document.getElementById("starlight__sidebar"),n=a?.querySelector("sl-sidebar-state-persist"),o="sl-sidebar-state",i=()=>{let t=[];const e=n?.dataset.hash||"";try{const s=sessionStorage.getItem(o),r=JSON.parse(s||"{}");Array.isArray(r.open)&&r.hash===e&&(t=r.open)}catch{}return{hash:e,open:t,scroll:a?.scrollTop||0}},c=t=>{try{sessionStorage.setItem(o,JSON.stringify(t))}catch{}},d=()=>c(i()),l=(t,e)=>{const s=i();s.open[e]=t,c(s)};n?.addEventListener("click",t=>{if(!(t.target instanceof Element))return;const e=t.target.closest("summary")?.closest("details");if(!e)return;const s=e.querySelector("sl-sidebar-restore"),r=parseInt(s?.dataset.index||"");isNaN(r)||l(!e.open,r)});addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&d()});addEventListener("pageHide",d);</script> <div class="lg:sl-flex astro-7dbgj2gg"> <aside class="right-sidebar-container print:hidden astro-7dbgj2gg"> <div class="right-sidebar astro-7dbgj2gg"> <div class="lg:sl-hidden astro-ungkjbep"><mobile-starlight-toc data-min-h="2" data-max-h="3" class="astro-qoe4sryv"><nav aria-labelledby="starlight__on-this-page--mobile" class="astro-qoe4sryv"><details id="starlight__mobile-toc" class="astro-qoe4sryv"><summary id="starlight__on-this-page--mobile" class="sl-flex astro-qoe4sryv"><span class="toggle sl-flex astro-qoe4sryv">On this page<svg aria-hidden="true" class="caret astro-qoe4sryv astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1rem;"><path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z"/></svg></span><span class="display-current astro-qoe4sryv"></span></summary><div class="dropdown astro-qoe4sryv"><ul class="isMobile astro-mc3l7tuo" style="--depth: 0;"> <li class="astro-mc3l7tuo" style="--depth: 0;"> <a href="#_top" class="astro-mc3l7tuo" style="--depth: 0;"> <span class="astro-mc3l7tuo" style="--depth: 0;">Overview</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 0;"> <a href="#exit-code-contract" class="astro-mc3l7tuo" style="--depth: 0;"> <span class="astro-mc3l7tuo" style="--depth: 0;">Exit code contract</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 0;"> <a href="#common-flags" class="astro-mc3l7tuo" style="--depth: 0;"> <span class="astro-mc3l7tuo" style="--depth: 0;">Common flags</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 0;"> <a href="#command-reference" class="astro-mc3l7tuo" style="--depth: 0;"> <span class="astro-mc3l7tuo" style="--depth: 0;">Command reference</span> </a> <ul class="isMobile astro-mc3l7tuo" style="--depth: 1;"> <li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-index-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec index [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-check-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec check [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-guard-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec guard [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-map-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec map [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-query-text-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec query <text> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-relations-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec relations [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-provenance-issueid-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec provenance [issueId] [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-resolve-files-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec resolve <files...> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-propagation-reqid-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec propagation <reqId> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-gate-repo-reqid-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec gate <repo> <reqId> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-init-repo" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec init [repo]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-domain-new-name--spec-domain-list-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec domain new <name> / spec domain list [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-migrate-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec migrate [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-req-domain-prefix-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec req <domain-prefix> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-term-" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec term …</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-glossary-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec glossary [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-supersede-reqid-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec supersede <reqId> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-move-reqid-new-domain-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec move <reqId> <NEW-DOMAIN> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-amend-reqid-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec amend <reqId> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-serve-platformdir---port-n" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec serve [platformDir] [--port N]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-mcp-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec mcp [platformDir]</span> </a> </li> </ul> </li> </ul></div></details></nav></mobile-starlight-toc><script type="module" src="/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.hwBsy0Mo.js"></script></div><div class="right-sidebar-panel sl-hidden lg:sl-block astro-ungkjbep"><div class="sl-container astro-ungkjbep"><starlight-toc data-min-h="2" data-max-h="3"><nav aria-labelledby="starlight__on-this-page"><h2 id="starlight__on-this-page">On this page</h2><ul class="astro-mc3l7tuo" style="--depth: 0;"> <li class="astro-mc3l7tuo" style="--depth: 0;"> <a href="#_top" class="astro-mc3l7tuo" style="--depth: 0;"> <span class="astro-mc3l7tuo" style="--depth: 0;">Overview</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 0;"> <a href="#exit-code-contract" class="astro-mc3l7tuo" style="--depth: 0;"> <span class="astro-mc3l7tuo" style="--depth: 0;">Exit code contract</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 0;"> <a href="#common-flags" class="astro-mc3l7tuo" style="--depth: 0;"> <span class="astro-mc3l7tuo" style="--depth: 0;">Common flags</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 0;"> <a href="#command-reference" class="astro-mc3l7tuo" style="--depth: 0;"> <span class="astro-mc3l7tuo" style="--depth: 0;">Command reference</span> </a> <ul class="astro-mc3l7tuo" style="--depth: 1;"> <li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-index-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec index [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-check-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec check [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-guard-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec guard [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-map-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec map [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-query-text-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec query <text> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-relations-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec relations [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-provenance-issueid-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec provenance [issueId] [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-resolve-files-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec resolve <files...> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-propagation-reqid-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec propagation <reqId> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-gate-repo-reqid-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec gate <repo> <reqId> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-init-repo" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec init [repo]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-domain-new-name--spec-domain-list-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec domain new <name> / spec domain list [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-migrate-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec migrate [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-req-domain-prefix-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec req <domain-prefix> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-term-" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec term …</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-glossary-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec glossary [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-supersede-reqid-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec supersede <reqId> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-move-reqid-new-domain-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec move <reqId> <NEW-DOMAIN> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-amend-reqid-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec amend <reqId> [platformDir]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-serve-platformdir---port-n" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec serve [platformDir] [--port N]</span> </a> </li><li class="astro-mc3l7tuo" style="--depth: 1;"> <a href="#spec-mcp-platformdir" class="astro-mc3l7tuo" style="--depth: 1;"> <span class="astro-mc3l7tuo" style="--depth: 1;">spec mcp [platformDir]</span> </a> </li> </ul> </li> </ul></nav></starlight-toc><script type="module" src="/_astro/TableOfContents.astro_astro_type_script_index_0_lang.FuRcXuRY.js"></script></div></div> </div> </aside> <div class="main-pane astro-7dbgj2gg"> <main data-pagefind-body class="astro-hke2hksx" lang="en" dir="ltr"> <div class="content-panel astro-cwqdebiv"> <div class="sl-container astro-cwqdebiv"> <h1 id="_top" class="astro-jkmikw3m">Commands</h1> </div> </div> <div class="content-panel astro-cwqdebiv"> <div class="sl-container astro-cwqdebiv"> <div class="sl-markdown-content"> <p>All commands are run via <code dir="auto">bun packages/engine/src/cli.ts <command> [args]</code> or <code dir="auto">./dist/spec <command> [args]</code>.</p>
|
|
74
|
+
<div class="sl-heading-wrapper level-h2"><h2 id="exit-code-contract">Exit code contract</h2><a class="sl-anchor-link" href="#exit-code-contract"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “Exit code contract”</span></a></div>
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
<table><thead><tr><th>Code</th><th>Meaning</th></tr></thead><tbody><tr><td>0</td><td>Success. Empty results are success (<code dir="auto">[]</code> on stdout, guidance on stderr).</td></tr><tr><td>1</td><td>Data-level failure: <code dir="auto">check</code> found ≥1 error-severity diagnostic; <code dir="auto">guard</code> found a loss; <code dir="auto">gate</code> failed; <code dir="auto">index</code> crashed mid-build.</td></tr><tr><td>2</td><td>Usage/environment error: bad args, not a Spec Engine platform, path-containment violation, etc.</td></tr></tbody></table>
|
|
97
|
+
<div class="sl-heading-wrapper level-h2"><h2 id="common-flags">Common flags</h2><a class="sl-anchor-link" href="#common-flags"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “Common flags”</span></a></div>
|
|
98
|
+
<p>Index-touching commands (<code dir="auto">index</code>, <code dir="auto">check</code>, <code dir="auto">map</code>, <code dir="auto">query</code>, <code dir="auto">relations</code>, <code dir="auto">resolve</code>, <code dir="auto">propagation</code>, <code dir="auto">provenance</code>, <code dir="auto">gate</code>, <code dir="auto">serve</code>) accept:</p>
|
|
99
|
+
<ul>
|
|
100
|
+
<li><code dir="auto">--out <path></code> — DB path override (must resolve inside <code dir="auto">platformDir</code>)</li>
|
|
101
|
+
<li><code dir="auto">--no-prompt</code> — suppress interactive onboarding prompt</li>
|
|
102
|
+
<li><code dir="auto">--json</code> — emit structured output (all except <code dir="auto">serve</code>)</li>
|
|
103
|
+
</ul>
|
|
104
|
+
<p>Read commands (<code dir="auto">map</code>, <code dir="auto">query</code>, <code dir="auto">relations</code>, <code dir="auto">resolve</code>, <code dir="auto">propagation</code>, <code dir="auto">provenance</code>) trust a schema-matching existing index; pass <code dir="auto">--fresh</code> to force a cold rebuild first. <code dir="auto">check --ci</code> and <code dir="auto">gate</code> always rebuild cold — correctness never trusts a warm index.</p>
|
|
105
|
+
<div class="sl-heading-wrapper level-h2"><h2 id="command-reference">Command reference</h2><a class="sl-anchor-link" href="#command-reference"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “Command reference”</span></a></div>
|
|
106
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-index-platformdir"><code dir="auto">spec index [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-index-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec index [platformDir]”</span></a></div>
|
|
107
|
+
<p>Build or refresh the derived SQLite index at <code dir="auto"><platformDir>/.spec-engine/index.sqlite</code>. <code dir="auto">--json</code> emits <code dir="auto">{ build_id, repos, domains, requirements, tags, diagnostics }</code>; <code dir="auto">build_id</code> is deterministic for identical inputs.</p>
|
|
108
|
+
<p><strong>Exit codes:</strong> 0 / 1 / 2</p>
|
|
109
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-check-platformdir"><code dir="auto">spec check [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-check-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec check [platformDir]”</span></a></div>
|
|
110
|
+
<p>Cross-repo integrity, coverage, and drift diagnostics. See <a href="/checks/">Integrity Checks</a> for every code.</p>
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
<table><thead><tr><th>Flag</th><th>Description</th></tr></thead><tbody><tr><td><code dir="auto">--ci</code></td><td>Force cold rebuild (delete DB first)</td></tr><tr><td><code dir="auto">--results <junit.xml></code></td><td>Trusted-red proof gate: a verifying tag only counts when its test <em>passed</em> — fires <code dir="auto">UNPROVEN_REQ</code> otherwise. Without it, <code dir="auto">PROOFS_UNCONFIRMED</code> reminds you the gate is presence-only</td></tr><tr><td><code dir="auto">--base <ref></code></td><td>Governance diff against a git ref: fires <code dir="auto">REQUIREMENT_REMOVED</code> / <code dir="auto">UNAPPROVED_STATUS_FLIP</code> (and <code dir="auto">PARTIAL_PROPAGATION</code> with <code dir="auto">--results</code>)</td></tr><tr><td><code dir="auto">--approved-by <list></code></td><td>Approver set consulted by the status-flip governance check</td></tr><tr><td><code dir="auto">--require-owner-approval</code></td><td>Escalate <code dir="auto">UNAPPROVED_STATUS_FLIP</code> from warning to error</td></tr><tr><td><code dir="auto">--unsourced-change</code></td><td>Opt-in: warn on superseded requirements lacking a <code dir="auto">supersedes-via</code> issue</td></tr></tbody></table>
|
|
145
|
+
<p><strong>Exit codes:</strong> 0 (clean) / 1 (errors found) / 2 (crash)</p>
|
|
146
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-guard-platformdir"><code dir="auto">spec guard [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-guard-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec guard [platformDir]”</span></a></div>
|
|
147
|
+
<p>The pre-commit <strong>loss gate</strong>: diffs the requirement derivation at <code dir="auto">--against <ref></code> (default <code dir="auto">HEAD</code>) against the working tree and blocks what the change is about to steamroll. Losses: <code dir="auto">REQUIREMENT_REMOVED</code> (an active requirement gone with no supersession), <code dir="auto">IMPL_LOST</code> / <code dir="auto">VERIFY_LOST</code> (a surviving requirement’s last implementing/verifying tag removed), <code dir="auto">SPEC_FILE_DELETED</code>. A loss is suppressed by superseding the requirement in the same change or an explicit <code dir="auto">// @spec approve KEY-NNN <reason></code> comment. A non-git tree or unknown ref warns and exits 0 — the guard is a safety net, not a git dependency.</p>
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
<table><thead><tr><th>Flag</th><th>Description</th></tr></thead><tbody><tr><td><code dir="auto">--against <ref></code></td><td>Git ref to diff against (default <code dir="auto">HEAD</code>)</td></tr><tr><td><code dir="auto">--json</code></td><td>Emit <code dir="auto">{ kind, req_id, file, line, detail }</code> rows, byte-stable</td></tr></tbody></table>
|
|
166
|
+
<p><strong>Exit codes:</strong> 0 (clean) / 1 (loss found) / 2</p>
|
|
167
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-map-platformdir"><code dir="auto">spec map [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-map-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec map [platformDir]”</span></a></div>
|
|
168
|
+
<p>Render the cross-repo coverage matrix. <strong>Exit codes:</strong> 0 / 2</p>
|
|
169
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-query-text-platformdir"><code dir="auto">spec query <text> [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-query-text-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec query <text> [platformDir]”</span></a></div>
|
|
170
|
+
<p>Full-text retrieval over requirements (FTS5, BM25-ranked, best first). Superseded requirements are excluded. Glossary term definitions ride the same index and surface in a separate Terms group. <code dir="auto">--limit N</code> (default 10, max 1000). Wrap multi-word phrases in quotes; bare <code dir="auto">AND</code>/<code dir="auto">OR</code> is an FTS5 grammar error (exit 2).</p>
|
|
171
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
172
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-relations-platformdir"><code dir="auto">spec relations [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-relations-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec relations [platformDir]”</span></a></div>
|
|
173
|
+
<p>Render <code dir="auto">relates</code> links as a mermaid <code dir="auto">graph LR</code> diagram (text mode) or <code dir="auto">{ from_id, to_id, source_file, line }</code> rows (<code dir="auto">--json</code>). <strong>Exit codes:</strong> 0 / 2</p>
|
|
174
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-provenance-issueid-platformdir"><code dir="auto">spec provenance [issueId] [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-provenance-issueid-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec provenance [issueId] [platformDir]”</span></a></div>
|
|
175
|
+
<p>Per-requirement provenance matrix: the issues that created/revised/retired it (by role), the backing tests, and a git pointer. An optional leading <code dir="auto"><issueId></code> is a display-only reverse-lookup filter — the issue ID stays opaque, never a join key. <code dir="auto">--resolve-issues</code> overlays tracker title/status/URL via the optional adapter (needs <code dir="auto">SPEC_TRACKER_TOKEN</code>; off by default, degrades gracefully).</p>
|
|
176
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
177
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-resolve-files-platformdir"><code dir="auto">spec resolve <files...> [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-resolve-files-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec resolve <files...> [platformDir]”</span></a></div>
|
|
178
|
+
<p>Requirements tagged in the given files. Accepts multiple positionals, comma-split within a positional, and absolute paths under the platform tree. <code dir="auto">--req KEY-NNN</code> inverts the lookup: every tag site for that requirement across all repos.</p>
|
|
179
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
180
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-propagation-reqid-platformdir"><code dir="auto">spec propagation <reqId> [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-propagation-reqid-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec propagation <reqId> [platformDir]”</span></a></div>
|
|
181
|
+
<p>Classify each member repo’s relationship to a superseded requirement: <code dir="auto">MIGRATED_VERIFIED</code>, <code dir="auto">MIGRATED_UNVERIFIED</code>, <code dir="auto">ON_PREDECESSOR</code>, <code dir="auto">ON_OTHER_DOMAIN_REQ</code>, <code dir="auto">NO_DOMAIN_REFERENCE</code> — plus a <code dir="auto">drifted</code> flag per member.</p>
|
|
182
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
183
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-gate-repo-reqid-platformdir"><code dir="auto">spec gate <repo> <reqId> [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-gate-repo-reqid-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec gate <repo> <reqId> [platformDir]”</span></a></div>
|
|
184
|
+
<p>Approval primitive. Passes iff <code dir="auto"><reqId></code> is Active AND <code dir="auto"><repo></code>’s pin covers the requirement’s <code dir="auto">changed_at_version</code>. <strong>Decision order:</strong> <code dir="auto">NOT_FOUND</code> → <code dir="auto">DRAFT</code> → <code dir="auto">SUPERSEDED</code> → <code dir="auto">VERSION_PIN</code> → <code dir="auto">PASS</code>; pin equality passes. An unknown repo is a usage error (exit 2), not a gate failure.</p>
|
|
185
|
+
<p><strong>Exit codes:</strong> 0 (PASS) / 1 (failure) / 2 (bad args)</p>
|
|
186
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-init-repo"><code dir="auto">spec init [repo]</code></h3><a class="sl-anchor-link" href="#spec-init-repo"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec init [repo]”</span></a></div>
|
|
187
|
+
<p>Scaffold <code dir="auto">spec-engine.member.json</code> into a member repo. Pin resolution: <code dir="auto">--specs <pin></code> wins; else the <strong>derived platform version</strong> (the max of the enclosing platform’s domain versions); else <code dir="auto">spec-engine@1</code> with a printed note. An existing config is left untouched (“already configured”, exit 0); <code dir="auto">--force</code> rewrites the pin while preserving an <code dir="auto">ignore</code> list. The config may also carry <code dir="auto">"members": "<glob>"</code> for monorepo workspace expansion — each matching subdirectory becomes its own coverage column.</p>
|
|
188
|
+
<p><strong>Exit codes:</strong> 0 / 2 (never exit 1)</p>
|
|
189
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-domain-new-name--spec-domain-list-platformdir"><code dir="auto">spec domain new <name></code> / <code dir="auto">spec domain list [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-domain-new-name--spec-domain-list-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec domain new <name> / spec domain list [platformDir]”</span></a></div>
|
|
190
|
+
<p>Scaffold <code dir="auto">spec-engine/<KEY>/SPEC.json</code> (input normalized to uppercase, whitespace stripped) / list domains with their charters (<code dir="auto">--json</code>: sorted <code dir="auto">{ key, scope }</code> array, read from the filesystem).</p>
|
|
191
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
192
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-migrate-platformdir"><code dir="auto">spec migrate [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-migrate-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec migrate [platformDir]”</span></a></div>
|
|
193
|
+
<p>One-time hard cutover: convert every legacy canonical <code dir="auto">SPEC.md</code> to a schema-validated sibling <code dir="auto">SPEC.json</code>, then delete the <code dir="auto">SPEC.md</code>. Idempotent — skips already-migrated dirs.</p>
|
|
194
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
195
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-req-domain-prefix-platformdir"><code dir="auto">spec req <domain-prefix> [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-req-domain-prefix-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec req <domain-prefix> [platformDir]”</span></a></div>
|
|
196
|
+
<p><strong>Piped:</strong> prints the next unused requirement ID (e.g. <code dir="auto">BILLING-010</code>) — zero prompts, zero writes. <strong>TTY:</strong> interactive authoring. <strong><code dir="auto">--text</code> (+ <code dir="auto">--why</code> / <code dir="auto">--binds</code> / <code dir="auto">--lives</code>):</strong> appends a born-active entry non-interactively through the validated write seam. Prefix is case-insensitive (<code dir="auto">bil</code> → <code dir="auto">BILLING</code>; ambiguous → exit 2). <code dir="auto">spec req <domain></code> alone prints the domain’s charter before authoring.</p>
|
|
197
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
198
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-term-"><code dir="auto">spec term …</code></h3><a class="sl-anchor-link" href="#spec-term-"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec term …”</span></a></div>
|
|
199
|
+
<p>The glossary authoring surface — a term is a requirement row in the reserved <code dir="auto">TERM</code> domain (definition in the statement, headword in <code dir="auto">term</code>, synonyms in <code dir="auto">aliases</code>):</p>
|
|
200
|
+
<ul>
|
|
201
|
+
<li><code dir="auto">spec term "<name>" --def "<definition>" [--aliases a,b] [--section s]</code> — author a <code dir="auto">TERM-NNN</code></li>
|
|
202
|
+
<li><code dir="auto">spec term list</code> — every term’s <code dir="auto">id name status</code>, read from the filesystem</li>
|
|
203
|
+
<li><code dir="auto">spec term revise <TERM-NNN> --def "…"</code> — rewrite a definition <strong>in place</strong> (same id) and bump the TERM envelope’s authored <code dir="auto">specVersion</code>, the pin citations drift against</li>
|
|
204
|
+
<li><code dir="auto">spec term confirm <KEY-NNN> <TERM-NNN></code> — re-pin a requirement’s citation to the term’s current version (clears <code dir="auto">TERM_DRIFT</code>); re-points to the successor when the cited term was superseded (clears <code dir="auto">SUPERSEDED_TERM_REFERENCED</code>)</li>
|
|
205
|
+
</ul>
|
|
206
|
+
<p><code dir="auto">spec supersede</code> and <code dir="auto">spec amend</code> work on TERM ids exactly as on requirements.</p>
|
|
207
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
208
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-glossary-platformdir"><code dir="auto">spec glossary [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-glossary-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec glossary [platformDir]”</span></a></div>
|
|
209
|
+
<p>The GLOSSARY.md round-trip. Default: <strong>generate</strong> GLOSSARY.md from the TERM store, byte-stable and LLM-free. <code dir="auto">--migrate</code>: one-time parse of an existing GLOSSARY.md into <code dir="auto">TERM-001..N</code> (idempotent-skip). <code dir="auto">--check</code>: regenerate into a buffer and fail (exit 1) if the committed file drifts — a CI fence.</p>
|
|
210
|
+
<p><strong>Exit codes:</strong> 0 / 1 / 2</p>
|
|
211
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-supersede-reqid-platformdir"><code dir="auto">spec supersede <reqId> [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-supersede-reqid-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec supersede <reqId> [platformDir]”</span></a></div>
|
|
212
|
+
<p>The post-ship lifecycle move, mechanized. Flips the entry to superseded, mints the successor (<code dir="auto">--text</code> required non-TTY; <code dir="auto">--why</code>/<code dir="auto">--binds</code>/<code dir="auto">--lives</code> default to copies), reindexes, and prints the <strong>retag worklist</strong> — every code site still on the old ID. The target must be Active.</p>
|
|
213
|
+
<p>On a requirement domain the reported <code dir="auto">spec_version</code> is the <strong>derived</strong> domain version after the supersession — no authored counter is written, and <code dir="auto">--no-bump</code> is a no-op (there is no counter to hold back). On the reserved TERM domain the authored <code dir="auto">specVersion</code> still bumps (it is the term-drift pin) and <code dir="auto">--no-bump</code> opts out.</p>
|
|
214
|
+
<p><code dir="auto">--json</code>: <code dir="auto">{ old_id, new_id, file, spec_version, retag: [...] }</code></p>
|
|
215
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
216
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-move-reqid-new-domain-platformdir"><code dir="auto">spec move <reqId> <NEW-DOMAIN> [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-move-reqid-new-domain-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec move <reqId> <NEW-DOMAIN> [platformDir]”</span></a></div>
|
|
217
|
+
<p>Cross-domain supersede for taxonomy reorganization: mints the successor as the next id in <code dir="auto"><NEW-DOMAIN></code> (which must exist), carrying the source’s fields (<code dir="auto">--text</code>/<code dir="auto">--why</code>/<code dir="auto">--lives</code> override), flips the source to superseded with a cross-domain <code dir="auto">supersededBy</code>, and emits the retag worklist. Both envelopes validate before either is written — a reject never half-applies. Only Active requirements move; moving into the source’s own domain is a usage error (use <code dir="auto">supersede</code>).</p>
|
|
218
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
219
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-amend-reqid-platformdir"><code dir="auto">spec amend <reqId> [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-amend-reqid-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec amend <reqId> [platformDir]”</span></a></div>
|
|
220
|
+
<p>Revise an unshipped requirement’s fields in place — same ID, no version change (the domain version only derives from supersessions). Field flags name what changes (<code dir="auto">--text</code>/<code dir="auto">--why</code>/<code dir="auto">--binds</code>/<code dir="auto">--lives</code>, at least one); untouched fields stay byte-identical. Only Active and Draft entries amend.</p>
|
|
221
|
+
<p><strong>Exit codes:</strong> 0 / 2</p>
|
|
222
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-serve-platformdir---port-n"><code dir="auto">spec serve [platformDir] [--port N]</code></h3><a class="sl-anchor-link" href="#spec-serve-platformdir---port-n"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec serve [platformDir] [--port N]”</span></a></div>
|
|
223
|
+
<p>Launch the local webapp over the derived index. Binds <code dir="auto">127.0.0.1</code> only. <code dir="auto">--probe</code> boots on an ephemeral port, smoke-tests, and exits.</p>
|
|
224
|
+
<p><strong>API routes:</strong> <code dir="auto">/api/coverage</code>, <code dir="auto">/api/report</code> (per-domain rollup over Active reqs), <code dir="auto">/api/repos</code>, <code dir="auto">/api/platform</code> (the derived platform version), <code dir="auto">/api/requirements[/:id]</code>, <code dir="auto">/api/propagation/:id</code>, <code dir="auto">/api/query?q=&limit=</code>, <code dir="auto">/api/resolve?files=...</code>, <code dir="auto">/api/relations[?format=mermaid]</code>, <code dir="auto">/api/provenance</code></p>
|
|
225
|
+
<p><strong>Exit codes:</strong> 0 / 1 / 2</p>
|
|
226
|
+
<div class="sl-heading-wrapper level-h3"><h3 id="spec-mcp-platformdir"><code dir="auto">spec mcp [platformDir]</code></h3><a class="sl-anchor-link" href="#spec-mcp-platformdir"><span aria-hidden="true" class="sl-anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span><span class="sr-only" data-pagefind-ignore="">Section titled “spec mcp [platformDir]”</span></a></div>
|
|
227
|
+
<p>Serve Spec Engine as a Model Context Protocol server over stdio. Tools: <code dir="auto">spec_query</code>, <code dir="auto">spec_resolve</code>, <code dir="auto">spec_req_tags</code>, <code dir="auto">spec_coverage_report</code>, <code dir="auto">spec_check</code>, <code dir="auto">spec_propagation</code>, <code dir="auto">spec_next_id</code> — the same JSON the CLI’s <code dir="auto">--json</code> modes emit, reindexed fresh per call. Also advertises the <code dir="auto">author_requirements</code> prompt (a static authoring playbook; the engine itself runs no model).</p>
|
|
228
|
+
<p><strong>Exit codes:</strong> 0 / 2</p> </div> <footer class="sl-flex astro-g7gasbrj"> <div class="meta sl-flex astro-g7gasbrj"> <a href="https://github.com/spec-engine/spec-engine/edit/main/packages/site/src/content/docs/commands.md" class="sl-flex print:hidden astro-tr6myc4c"><svg aria-hidden="true" class="astro-tr6myc4c astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.2em;"><path d="M22 7.24a1 1 0 0 0-.29-.71l-4.24-4.24a1 1 0 0 0-1.1-.22 1 1 0 0 0-.32.22l-2.83 2.83L2.29 16.05a1 1 0 0 0-.29.71V21a1 1 0 0 0 1 1h4.24a1 1 0 0 0 .76-.29l10.87-10.93L21.71 8c.1-.1.17-.2.22-.33a1 1 0 0 0 0-.24v-.14l.07-.05ZM6.83 20H4v-2.83l9.93-9.93 2.83 2.83L6.83 20ZM18.17 8.66l-2.83-2.83 1.42-1.41 2.82 2.82-1.41 1.42Z"/></svg>Edit page</a> </div> <div class="pagination-links print:hidden astro-iud5vnm7" dir="ltr"> <a href="/architecture/" rel="prev" class="astro-iud5vnm7"> <svg aria-hidden="true" class="astro-iud5vnm7 astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17 11H9.41l3.3-3.29a1.004 1.004 0 1 0-1.42-1.42l-5 5a1 1 0 0 0-.21.33 1 1 0 0 0 0 .76 1 1 0 0 0 .21.33l5 5a1.002 1.002 0 0 0 1.639-.325 1 1 0 0 0-.219-1.095L9.41 13H17a1 1 0 0 0 0-2Z"/></svg> <span class="astro-iud5vnm7"> Previous <br class="astro-iud5vnm7"> <span class="link-title astro-iud5vnm7">Architecture</span> </span> </a> <a href="/format/" rel="next" class="astro-iud5vnm7"> <svg aria-hidden="true" class="astro-iud5vnm7 astro-kyfdspn7" width="16" height="16" viewBox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"><path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z"/></svg> <span class="astro-iud5vnm7"> Next <br class="astro-iud5vnm7"> <span class="link-title astro-iud5vnm7">SPEC.json Format</span> </span> </a> </div> </footer> </div> </div> </main> </div> </div> </div> </div> </body></html>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64">
|
|
2
|
+
<rect width="64" height="64" rx="14" fill="#C4F135"></rect>
|
|
3
|
+
<path d="M25 13 H13 V51 H25" stroke="#0F1214" stroke-width="6" fill="none"></path>
|
|
4
|
+
<path d="M39 13 H51 V51 H39" stroke="#0F1214" stroke-width="6" fill="none"></path>
|
|
5
|
+
<rect x="27" y="27" width="10" height="10" fill="#0F1214"></rect>
|
|
6
|
+
<line x1="32" y1="13" x2="32" y2="25" stroke="#0F1214" stroke-width="4.5"></line>
|
|
7
|
+
<line x1="32" y1="39" x2="32" y2="51" stroke="#0F1214" stroke-width="4.5"></line>
|
|
8
|
+
</svg>
|