@theglitchking/hit-em-with-the-docs 2.4.0 → 2.6.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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +76 -0
- package/commands/domain.md +48 -0
- package/dist/action/core/audit/auditor.d.ts.map +1 -1
- package/dist/action/core/audit/rules.d.ts.map +1 -1
- package/dist/action/core/domains/constants.d.ts +28 -23
- package/dist/action/core/domains/constants.d.ts.map +1 -1
- package/dist/action/core/domains/detector.d.ts +1 -1
- package/dist/action/core/domains/detector.d.ts.map +1 -1
- package/dist/action/core/domains/manage.d.ts +76 -0
- package/dist/action/core/domains/manage.d.ts.map +1 -0
- package/dist/action/core/domains/registry.d.ts +54 -0
- package/dist/action/core/domains/registry.d.ts.map +1 -0
- package/dist/action/core/integrate/integrator.d.ts.map +1 -1
- package/dist/action/core/links/tracker.d.ts.map +1 -1
- package/dist/action/core/maintain/orchestrator.d.ts +2 -0
- package/dist/action/core/maintain/orchestrator.d.ts.map +1 -1
- package/dist/action/generators/index-generator.d.ts.map +1 -1
- package/dist/action/generators/regenerate.d.ts +38 -0
- package/dist/action/generators/regenerate.d.ts.map +1 -0
- package/dist/action/generators/registry-generator.d.ts.map +1 -1
- package/dist/action/generators/scaffold.d.ts.map +1 -1
- package/dist/action/index.d.ts +2 -0
- package/dist/action/index.d.ts.map +1 -1
- package/dist/action/index.js +4 -4
- package/dist/action/utils/config.d.ts +139 -0
- package/dist/action/utils/config.d.ts.map +1 -1
- package/dist/action/utils/glob.d.ts +13 -1
- package/dist/action/utils/glob.d.ts.map +1 -1
- package/dist/cli/index.js +157 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/core/audit/auditor.d.ts.map +1 -1
- package/dist/core/audit/auditor.js +62 -2
- package/dist/core/audit/auditor.js.map +1 -1
- package/dist/core/audit/rules.d.ts.map +1 -1
- package/dist/core/audit/rules.js +3 -2
- package/dist/core/audit/rules.js.map +1 -1
- package/dist/core/domains/constants.d.ts +28 -23
- package/dist/core/domains/constants.d.ts.map +1 -1
- package/dist/core/domains/constants.js +11 -41
- package/dist/core/domains/constants.js.map +1 -1
- package/dist/core/domains/detector.d.ts +1 -1
- package/dist/core/domains/detector.d.ts.map +1 -1
- package/dist/core/domains/detector.js +5 -5
- package/dist/core/domains/detector.js.map +1 -1
- package/dist/core/domains/manage.d.ts +76 -0
- package/dist/core/domains/manage.d.ts.map +1 -0
- package/dist/core/domains/manage.js +171 -0
- package/dist/core/domains/manage.js.map +1 -0
- package/dist/core/domains/registry.d.ts +54 -0
- package/dist/core/domains/registry.d.ts.map +1 -0
- package/dist/core/domains/registry.js +116 -0
- package/dist/core/domains/registry.js.map +1 -0
- package/dist/core/integrate/integrator.d.ts.map +1 -1
- package/dist/core/integrate/integrator.js +9 -31
- package/dist/core/integrate/integrator.js.map +1 -1
- package/dist/core/links/tracker.d.ts.map +1 -1
- package/dist/core/links/tracker.js +8 -5
- package/dist/core/links/tracker.js.map +1 -1
- package/dist/core/maintain/orchestrator.d.ts +2 -0
- package/dist/core/maintain/orchestrator.d.ts.map +1 -1
- package/dist/core/maintain/orchestrator.js +21 -2
- package/dist/core/maintain/orchestrator.js.map +1 -1
- package/dist/core/metadata/schema.d.ts +48 -48
- package/dist/generators/index-generator.d.ts.map +1 -1
- package/dist/generators/index-generator.js +10 -10
- package/dist/generators/index-generator.js.map +1 -1
- package/dist/generators/regenerate.d.ts +38 -0
- package/dist/generators/regenerate.d.ts.map +1 -0
- package/dist/generators/regenerate.js +138 -0
- package/dist/generators/regenerate.js.map +1 -0
- package/dist/generators/registry-generator.d.ts.map +1 -1
- package/dist/generators/registry-generator.js +6 -6
- package/dist/generators/registry-generator.js.map +1 -1
- package/dist/generators/scaffold.d.ts.map +1 -1
- package/dist/generators/scaffold.js +43 -9
- package/dist/generators/scaffold.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/config.d.ts +139 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +82 -5
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/glob.d.ts +13 -1
- package/dist/utils/glob.d.ts.map +1 -1
- package/dist/utils/glob.js +23 -2
- package/dist/utils/glob.js.map +1 -1
- package/package.json +1 -1
- package/templates/claude/CLAUDE.md +5 -1
package/dist/utils/config.js
CHANGED
|
@@ -6,12 +6,56 @@
|
|
|
6
6
|
* 2.3.0 `vault` block for knowledge-base configuration. Missing or
|
|
7
7
|
* malformed files fall back to defaults — never throws.
|
|
8
8
|
*/
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
9
|
+
import { readFileSync } from 'fs';
|
|
10
|
+
import { mkdir, readFile, writeFile } from 'fs/promises';
|
|
11
|
+
import { dirname, join, resolve } from 'path';
|
|
11
12
|
import { z } from 'zod';
|
|
12
13
|
export const DEFAULT_VAULT_ROOT = '.documentation/knowledge-base/';
|
|
13
14
|
export const DEFAULT_PLAYBOOK_GLOBS = ['.documentation/**/*.md'];
|
|
14
15
|
export const DEFAULT_AUDIT_WINDOW_DAYS = 90;
|
|
16
|
+
/** Kebab-case slug: matches the fact/incident id convention used elsewhere. */
|
|
17
|
+
const KEBAB_SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
18
|
+
/**
|
|
19
|
+
* Valid `category` values for a domain. Kept in sync with `DomainDefinition`
|
|
20
|
+
* in `core/domains/constants.ts` — duplicated here intentionally so the config
|
|
21
|
+
* loader carries no dependency on the domain layer (the registry imports the
|
|
22
|
+
* config, not the other way around).
|
|
23
|
+
*/
|
|
24
|
+
export const DOMAIN_CATEGORY_VALUES = [
|
|
25
|
+
'core',
|
|
26
|
+
'development',
|
|
27
|
+
'features',
|
|
28
|
+
'advanced',
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* Schema for a single custom domain entry. Mirrors `DomainDefinition`. Used
|
|
32
|
+
* by the registry merge layer and by `hewtd domain add` (which validates
|
|
33
|
+
* strictly before writing). Collision with a built-in id is NOT checked here —
|
|
34
|
+
* that requires knowing the built-in set, so it is enforced in the registry
|
|
35
|
+
* merge (drop-with-warning) and in the CLI writer (hard error).
|
|
36
|
+
*/
|
|
37
|
+
export const customDomainSchema = z.object({
|
|
38
|
+
id: z.string().regex(KEBAB_SLUG_RE, 'domain id must be kebab-case'),
|
|
39
|
+
name: z.string().min(1),
|
|
40
|
+
description: z.string().min(1),
|
|
41
|
+
keywords: z.array(z.string().min(1)).min(1, 'at least one keyword is required'),
|
|
42
|
+
loadPriority: z.number().int().min(1).max(10),
|
|
43
|
+
category: z.enum(DOMAIN_CATEGORY_VALUES),
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* Lenient `domains[]` parser: drops malformed entries instead of failing the
|
|
47
|
+
* whole config load. This preserves `loadPluginConfig`'s never-throw contract —
|
|
48
|
+
* a hand-edited config with one bad domain entry still loads the rest (and the
|
|
49
|
+
* valid vault block). The CLI `domain add` command does the strict, user-facing
|
|
50
|
+
* validation; this is the last-line filter for the runtime.
|
|
51
|
+
*/
|
|
52
|
+
const lenientDomainsArray = z
|
|
53
|
+
.preprocess((val) => {
|
|
54
|
+
if (!Array.isArray(val))
|
|
55
|
+
return [];
|
|
56
|
+
return val.filter((entry) => customDomainSchema.safeParse(entry).success);
|
|
57
|
+
}, z.array(customDomainSchema))
|
|
58
|
+
.default([]);
|
|
15
59
|
/**
|
|
16
60
|
* Schema for `.claude/hit-em-with-the-docs.json`. Every field is optional
|
|
17
61
|
* with a sensible default. The runtime's `updatePolicy` is preserved via
|
|
@@ -27,6 +71,7 @@ const vaultConfigSchema = z
|
|
|
27
71
|
const pluginConfigSchema = z
|
|
28
72
|
.object({
|
|
29
73
|
vault: vaultConfigSchema,
|
|
74
|
+
domains: lenientDomainsArray,
|
|
30
75
|
})
|
|
31
76
|
.passthrough();
|
|
32
77
|
const CONFIG_FILENAME = '.claude/hit-em-with-the-docs.json';
|
|
@@ -63,9 +108,6 @@ export function loadPluginConfigSync(projectRoot) {
|
|
|
63
108
|
const configPath = resolve(root, CONFIG_FILENAME);
|
|
64
109
|
let raw;
|
|
65
110
|
try {
|
|
66
|
-
// Lazy require to avoid hoisting an fs dep when this code path isn't used.
|
|
67
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
68
|
-
const { readFileSync } = require('fs');
|
|
69
111
|
const contents = readFileSync(configPath, 'utf-8');
|
|
70
112
|
raw = JSON.parse(contents);
|
|
71
113
|
}
|
|
@@ -78,6 +120,41 @@ export function loadPluginConfigSync(projectRoot) {
|
|
|
78
120
|
}
|
|
79
121
|
return pluginConfigSchema.parse({});
|
|
80
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Read the RAW config object (unparsed, no defaults applied) for a project.
|
|
125
|
+
* Returns `{}` when the file is missing or unreadable/malformed. Use this when
|
|
126
|
+
* you need to MUTATE the config and write it back without clobbering keys this
|
|
127
|
+
* module doesn't model (e.g. the runtime's `updatePolicy`). Never throws.
|
|
128
|
+
*/
|
|
129
|
+
export async function readRawConfig(projectRoot) {
|
|
130
|
+
const root = projectRoot ?? process.cwd();
|
|
131
|
+
const configPath = resolve(root, CONFIG_FILENAME);
|
|
132
|
+
try {
|
|
133
|
+
const contents = await readFile(configPath, 'utf-8');
|
|
134
|
+
const parsed = JSON.parse(contents);
|
|
135
|
+
return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
|
|
136
|
+
? parsed
|
|
137
|
+
: {};
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return {};
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Write the RAW config object back to `.claude/hit-em-with-the-docs.json`,
|
|
145
|
+
* creating the `.claude/` directory if needed. Pretty-printed with a trailing
|
|
146
|
+
* newline. Returns the absolute path written.
|
|
147
|
+
*/
|
|
148
|
+
export async function writeRawConfig(projectRoot, data) {
|
|
149
|
+
const configPath = resolve(projectRoot, CONFIG_FILENAME);
|
|
150
|
+
await mkdir(dirname(configPath), { recursive: true });
|
|
151
|
+
await writeFile(configPath, JSON.stringify(data, null, 2) + '\n', 'utf-8');
|
|
152
|
+
return configPath;
|
|
153
|
+
}
|
|
154
|
+
/** Absolute path to a project's config file (whether or not it exists). */
|
|
155
|
+
export function configFilePath(projectRoot) {
|
|
156
|
+
return resolve(projectRoot, CONFIG_FILENAME);
|
|
157
|
+
}
|
|
81
158
|
/**
|
|
82
159
|
* Resolve the vault root for a project, applying config + defaults.
|
|
83
160
|
* The returned path is absolute.
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/glob.d.ts
CHANGED
|
@@ -9,7 +9,19 @@ export interface GlobOptions {
|
|
|
9
9
|
*/
|
|
10
10
|
export declare function glob(pattern: string, options?: GlobOptions): Promise<string[]>;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Reserved documentation subdirectory for DEPRECATED docs. Anything under
|
|
13
|
+
* `<docs>/archive/` is intentionally excluded from every hewtd scan (audit,
|
|
14
|
+
* link-check, metadata-sync, integrate dup-detection, link graph, search) —
|
|
15
|
+
* it's a parking lot for retired docs, not part of the active corpus.
|
|
16
|
+
*/
|
|
17
|
+
export declare const ARCHIVE_DIR = "archive";
|
|
18
|
+
/**
|
|
19
|
+
* Find all markdown files in a directory.
|
|
20
|
+
*
|
|
21
|
+
* Used exclusively as the documentation-corpus scanner, so it always skips
|
|
22
|
+
* the reserved `archive/` subtree (deprecated docs) in addition to the
|
|
23
|
+
* standard build/vcs ignores. Callers may pass extra `ignore` patterns; they
|
|
24
|
+
* are merged, never override the archive exclusion.
|
|
13
25
|
*/
|
|
14
26
|
export declare function findMarkdownFiles(dir: string, options?: Omit<GlobOptions, 'absolute'>): Promise<string[]>;
|
|
15
27
|
/**
|
package/dist/utils/glob.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/utils/glob.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,IAAI,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB;AAED
|
|
1
|
+
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../src/utils/glob.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,wBAAsB,IAAI,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,YAAY,CAAC;AAUrC;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAM,GAC1C,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOhE;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAStE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
package/dist/utils/glob.js
CHANGED
|
@@ -17,11 +17,32 @@ export async function glob(pattern, options = {}) {
|
|
|
17
17
|
return matches;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* Reserved documentation subdirectory for DEPRECATED docs. Anything under
|
|
21
|
+
* `<docs>/archive/` is intentionally excluded from every hewtd scan (audit,
|
|
22
|
+
* link-check, metadata-sync, integrate dup-detection, link graph, search) —
|
|
23
|
+
* it's a parking lot for retired docs, not part of the active corpus.
|
|
24
|
+
*/
|
|
25
|
+
export const ARCHIVE_DIR = 'archive';
|
|
26
|
+
/** Glob ignores always applied to documentation scans. */
|
|
27
|
+
const DOC_SCAN_IGNORE = [
|
|
28
|
+
'node_modules/**',
|
|
29
|
+
'dist/**',
|
|
30
|
+
'.git/**',
|
|
31
|
+
`${ARCHIVE_DIR}/**`,
|
|
32
|
+
];
|
|
33
|
+
/**
|
|
34
|
+
* Find all markdown files in a directory.
|
|
35
|
+
*
|
|
36
|
+
* Used exclusively as the documentation-corpus scanner, so it always skips
|
|
37
|
+
* the reserved `archive/` subtree (deprecated docs) in addition to the
|
|
38
|
+
* standard build/vcs ignores. Callers may pass extra `ignore` patterns; they
|
|
39
|
+
* are merged, never override the archive exclusion.
|
|
21
40
|
*/
|
|
22
41
|
export async function findMarkdownFiles(dir, options = {}) {
|
|
42
|
+
const { ignore: extraIgnore = [], ...rest } = options;
|
|
23
43
|
return glob('**/*.md', {
|
|
24
|
-
...
|
|
44
|
+
...rest,
|
|
45
|
+
ignore: [...DOC_SCAN_IGNORE, ...extraIgnore],
|
|
25
46
|
cwd: dir,
|
|
26
47
|
absolute: true,
|
|
27
48
|
});
|
package/dist/utils/glob.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/utils/glob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAShC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,OAAe,EACf,UAAuB,EAAE;IAEzB,MAAM,EACJ,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EACnB,QAAQ,GAAG,KAAK,EAChB,MAAM,GAAG,CAAC,iBAAiB,EAAE,SAAS,EAAE,SAAS,CAAC,EAClD,GAAG,GAAG,KAAK,GACZ,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE;QACrC,GAAG;QACH,QAAQ;QACR,MAAM;QACN,GAAG;QACH,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../src/utils/glob.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theglitchking/hit-em-with-the-docs",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"description": "Self-managing documentation system with hierarchical structure, intelligent automation, pattern discovery, and agent orchestration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli/index.js",
|
|
@@ -27,6 +27,10 @@ This project uses the hit-em-with-the-docs documentation system for hierarchical
|
|
|
27
27
|
└── plans/ # Planning documents
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
These 15 domains are built-in and always present. The set is **extensible** — register project-specific domains at runtime with `npx hit-em-with-the-docs domain add <id> -k <keywords>` (stored in `.claude/hit-em-with-the-docs.json` under `domains: []`, and scaffolded under `.documentation/<id>/`). Run `npx hit-em-with-the-docs domain list` to see the active set, and `domain remove <id>` to drop a custom one (never deletes docs).
|
|
31
|
+
|
|
32
|
+
**Deprecated docs → `.documentation/archive/`.** To retire a doc without deleting it, move it under `archive/`. hewtd excludes that folder from every scan (audit, link-check, metadata-sync, integrate, link graph, search), so archived docs are never validated or indexed. `archive` is reserved and cannot be a domain.
|
|
33
|
+
|
|
30
34
|
## Commands
|
|
31
35
|
|
|
32
36
|
### /docs
|
|
@@ -46,7 +50,7 @@ This loads:
|
|
|
46
50
|
|
|
47
51
|
#### /docs list
|
|
48
52
|
|
|
49
|
-
List all 15
|
|
53
|
+
List all documentation domains (the 15 built-in plus any custom domains) with descriptions.
|
|
50
54
|
|
|
51
55
|
#### /docs search <query>
|
|
52
56
|
|