@gcunharodrigues/wrxn 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 +38 -0
- package/bin/wrxn.cjs +342 -0
- package/lib/connect.cjs +216 -0
- package/lib/executor.cjs +238 -0
- package/lib/install.cjs +105 -0
- package/lib/manifest.cjs +67 -0
- package/lib/migrate.cjs +93 -0
- package/lib/onboard.cjs +84 -0
- package/lib/semver.cjs +14 -0
- package/lib/update.cjs +91 -0
- package/lib/worktree.cjs +217 -0
- package/manifest.json +451 -0
- package/migrations/README.md +21 -0
- package/package.json +23 -0
- package/payload/.claude/constitution.local.md +13 -0
- package/payload/.claude/constitution.md +28 -0
- package/payload/.claude/hooks/code-intel-push.cjs +108 -0
- package/payload/.claude/hooks/enforce-managed-guard.cjs +68 -0
- package/payload/.claude/hooks/enforce-managed-precommit.cjs +74 -0
- package/payload/.claude/hooks/enforce-push-authority.cjs +51 -0
- package/payload/.claude/hooks/enforce-review-marker.cjs +62 -0
- package/payload/.claude/hooks/enforce-tests-on-push.cjs +40 -0
- package/payload/.claude/hooks/recall-surface.cjs +127 -0
- package/payload/.claude/hooks/reference-detect.cjs +83 -0
- package/payload/.claude/hooks/session-end.cjs +132 -0
- package/payload/.claude/hooks/session-history.cjs +76 -0
- package/payload/.claude/hooks/session-start.cjs +117 -0
- package/payload/.claude/hooks/synapse-engine.cjs +351 -0
- package/payload/.claude/hooks/wiki-lint.cjs +104 -0
- package/payload/.claude/settings.json +60 -0
- package/payload/.claude/skills/audit/SKILL.md +23 -0
- package/payload/.claude/skills/diagnose/SKILL.md +117 -0
- package/payload/.claude/skills/diagnose/scripts/hitl-loop.template.sh +41 -0
- package/payload/.claude/skills/grill-me/SKILL.md +10 -0
- package/payload/.claude/skills/grill-with-docs/ADR-FORMAT.md +47 -0
- package/payload/.claude/skills/grill-with-docs/CONTEXT-FORMAT.md +60 -0
- package/payload/.claude/skills/grill-with-docs/SKILL.md +88 -0
- package/payload/.claude/skills/handoff/SKILL.md +19 -0
- package/payload/.claude/skills/improve-codebase-architecture/DEEPENING.md +37 -0
- package/payload/.claude/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
- package/payload/.claude/skills/improve-codebase-architecture/INTERFACE-DESIGN.md +44 -0
- package/payload/.claude/skills/improve-codebase-architecture/LANGUAGE.md +53 -0
- package/payload/.claude/skills/improve-codebase-architecture/SKILL.md +81 -0
- package/payload/.claude/skills/level-up/SKILL.md +28 -0
- package/payload/.claude/skills/memory/SKILL.md +79 -0
- package/payload/.claude/skills/onboard/SKILL.md +43 -0
- package/payload/.claude/skills/prototype/LOGIC.md +79 -0
- package/payload/.claude/skills/prototype/SKILL.md +30 -0
- package/payload/.claude/skills/prototype/UI.md +112 -0
- package/payload/.claude/skills/qa-walk/SKILL.md +227 -0
- package/payload/.claude/skills/qa-walk/references/cli-mode.md +28 -0
- package/payload/.claude/skills/qa-walk/references/finding-issue-template.md +48 -0
- package/payload/.claude/skills/qa-walk/references/walk-report-template.md +56 -0
- package/payload/.claude/skills/qa-walk/references/web-mode.md +112 -0
- package/payload/.claude/skills/setup-matt-pocock-skills/SKILL.md +121 -0
- package/payload/.claude/skills/setup-matt-pocock-skills/domain.md +51 -0
- package/payload/.claude/skills/setup-matt-pocock-skills/issue-tracker-github.md +22 -0
- package/payload/.claude/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +23 -0
- package/payload/.claude/skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
- package/payload/.claude/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/payload/.claude/skills/skill-creator/LICENSE.txt +202 -0
- package/payload/.claude/skills/skill-creator/SKILL.md +209 -0
- package/payload/.claude/skills/skill-creator/scripts/init_skill.py +303 -0
- package/payload/.claude/skills/skill-creator/scripts/package_skill.py +110 -0
- package/payload/.claude/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/payload/.claude/skills/synapse/SKILL.md +132 -0
- package/payload/.claude/skills/synapse/assets/README.md +50 -0
- package/payload/.claude/skills/synapse/references/brackets.md +100 -0
- package/payload/.claude/skills/synapse/references/commands.md +118 -0
- package/payload/.claude/skills/synapse/references/domains.md +126 -0
- package/payload/.claude/skills/synapse/references/layers.md +186 -0
- package/payload/.claude/skills/synapse/references/manifest.md +142 -0
- package/payload/.claude/skills/tdd/SKILL.md +22 -0
- package/payload/.claude/skills/tech-search/SKILL.md +431 -0
- package/payload/.claude/skills/tech-search/prompts/page-extract.md +133 -0
- package/payload/.claude/skills/to-issues/SKILL.md +83 -0
- package/payload/.claude/skills/to-prd/SKILL.md +74 -0
- package/payload/.claude/skills/triage/AGENT-BRIEF.md +168 -0
- package/payload/.claude/skills/triage/OUT-OF-SCOPE.md +101 -0
- package/payload/.claude/skills/triage/SKILL.md +103 -0
- package/payload/.claude/skills/write-a-skill/SKILL.md +117 -0
- package/payload/.recon.json +3 -0
- package/payload/.synapse/global +6 -0
- package/payload/.synapse/manifest +38 -0
- package/payload/.synapse/pipeline +6 -0
- package/payload/.synapse/routing +8 -0
- package/payload/.wrxn/continuity/.gitkeep +0 -0
- package/payload/.wrxn/history/.gitkeep +0 -0
- package/payload/.wrxn/wiki/.gitkeep +0 -0
- package/payload/.wrxn/wiki/concepts/.gitkeep +0 -0
- package/payload/.wrxn/wiki/decisions/.gitkeep +0 -0
- package/payload/.wrxn/wiki/gotchas/.gitkeep +0 -0
- package/payload/.wrxn/wiki/sessions/.gitkeep +0 -0
- package/payload/.wrxn/wiki.cjs +164 -0
- package/payload/aios-intake.md +32 -0
- package/payload/connections.md +15 -0
- package/payload/decisions/log.md +18 -0
- package/payload/docs/agents/domain.md +38 -0
- package/payload/docs/agents/issue-tracker.md +25 -0
- package/payload/docs/agents/triage-labels.md +15 -0
- package/payload/docs/workspace/operator-layer.md +14 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
// WRXN memory-wiki adapter — the install-local CLI over the file-based memory tiers.
|
|
5
|
+
// Self-contained: this ships INTO an install and MUST NOT import the kernel lib (node stdlib only).
|
|
6
|
+
//
|
|
7
|
+
// Tiers live under <installRoot>/.wrxn/wiki/<tier>/ where tier ∈ {concepts, decisions, gotchas, sessions}.
|
|
8
|
+
// Each page is a plain markdown file. Empty tiers are the fresh-install default — every read path
|
|
9
|
+
// must return cleanly (no crash) over an empty wiki.
|
|
10
|
+
//
|
|
11
|
+
// Subcommands:
|
|
12
|
+
// query <text...> grep-style substring search → JSON {query, tier, total, hits[]}
|
|
13
|
+
// recall <text...> alias of query (page-level recall; same substring engine)
|
|
14
|
+
// write-page <tier> <slug> create <tier>/<slug>.md (refuses to overwrite); prints the path
|
|
15
|
+
//
|
|
16
|
+
// Flags: --tier <concepts|decisions|gotchas|sessions|all> (default all) · --limit <N> (default 20)
|
|
17
|
+
// --root <dir> (override the install-root walk-up; mainly for tests)
|
|
18
|
+
|
|
19
|
+
const fs = require('fs');
|
|
20
|
+
const path = require('path');
|
|
21
|
+
|
|
22
|
+
const TIERS = ['concepts', 'decisions', 'gotchas', 'sessions'];
|
|
23
|
+
|
|
24
|
+
// ── install-root resolution (walk up to the wrxn.install.json receipt) ────────
|
|
25
|
+
// Mirrors payload/.claude/hooks/enforce-managed-guard.cjs findInstallRoot.
|
|
26
|
+
function findInstallRoot(start) {
|
|
27
|
+
let dir = start || process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
28
|
+
for (let i = 0; i < 12; i++) {
|
|
29
|
+
if (fs.existsSync(path.join(dir, 'wrxn.install.json'))) return dir;
|
|
30
|
+
const up = path.dirname(dir);
|
|
31
|
+
if (up === dir) break;
|
|
32
|
+
dir = up;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function flag(name) {
|
|
38
|
+
const i = process.argv.indexOf(`--${name}`);
|
|
39
|
+
return i > -1 ? process.argv[i + 1] : undefined;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function wikiRoot() {
|
|
43
|
+
const override = flag('root');
|
|
44
|
+
const root = override || findInstallRoot();
|
|
45
|
+
if (!root) {
|
|
46
|
+
fail('cannot resolve the install root — run inside a wrxn install (no wrxn.install.json found walking up) or pass --root <dir>');
|
|
47
|
+
}
|
|
48
|
+
return path.join(root, '.wrxn', 'wiki');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function fail(msg) {
|
|
52
|
+
process.stderr.write(`wiki: ${msg}\n`);
|
|
53
|
+
process.exit(2);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// positional args after the subcommand, up to the first --flag
|
|
57
|
+
function positionals() {
|
|
58
|
+
const out = [];
|
|
59
|
+
for (let i = 3; i < process.argv.length; i++) {
|
|
60
|
+
if (process.argv[i].startsWith('--')) break;
|
|
61
|
+
out.push(process.argv[i]);
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function tierDirs(root, tierFlag) {
|
|
67
|
+
if (!tierFlag || tierFlag === 'all') return TIERS.map((t) => [t, path.join(root, t)]);
|
|
68
|
+
if (!TIERS.includes(tierFlag)) fail(`unknown tier "${tierFlag}" — one of ${TIERS.join(', ')}, all`);
|
|
69
|
+
return [[tierFlag, path.join(root, tierFlag)]];
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function listPages(dir) {
|
|
73
|
+
let names;
|
|
74
|
+
try {
|
|
75
|
+
names = fs.readdirSync(dir);
|
|
76
|
+
} catch {
|
|
77
|
+
return []; // tier dir absent → empty, no crash
|
|
78
|
+
}
|
|
79
|
+
return names.filter((n) => n.endsWith('.md')).map((n) => path.join(dir, n));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// ── query / recall (shared substring engine) ─────────────────────────────────
|
|
83
|
+
function runQuery() {
|
|
84
|
+
const terms = positionals();
|
|
85
|
+
if (terms.length === 0) {
|
|
86
|
+
process.stdout.write('Usage: node .wrxn/wiki.cjs query <search-term...> [--tier all|concepts|decisions|gotchas|sessions] [--limit N]\n');
|
|
87
|
+
process.exit(2);
|
|
88
|
+
}
|
|
89
|
+
const needle = terms.join(' ').toLowerCase();
|
|
90
|
+
const tierFlag = flag('tier') || 'all';
|
|
91
|
+
const limit = Number(flag('limit')) || 20;
|
|
92
|
+
const root = wikiRoot();
|
|
93
|
+
|
|
94
|
+
const hits = [];
|
|
95
|
+
for (const [tier, dir] of tierDirs(root, tierFlag)) {
|
|
96
|
+
for (const file of listPages(dir)) {
|
|
97
|
+
const lines = fs.readFileSync(file, 'utf8').split('\n');
|
|
98
|
+
for (let n = 0; n < lines.length; n++) {
|
|
99
|
+
if (lines[n].toLowerCase().includes(needle)) {
|
|
100
|
+
hits.push({ tier, file: path.relative(root, file), line: n + 1, snippet: lines[n].trim() });
|
|
101
|
+
if (hits.length >= limit) break;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (hits.length >= limit) break;
|
|
105
|
+
}
|
|
106
|
+
if (hits.length >= limit) break;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
process.stdout.write(
|
|
110
|
+
JSON.stringify({ query: terms.join(' '), tier: tierFlag, total: hits.length, returned: hits.length, hits }, null, 2) + '\n'
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ── write-page ────────────────────────────────────────────────────────────────
|
|
115
|
+
function runWritePage() {
|
|
116
|
+
const [tier, slug] = positionals();
|
|
117
|
+
if (!tier || !slug) {
|
|
118
|
+
process.stdout.write('Usage: node .wrxn/wiki.cjs write-page <tier> <slug> [--description "..."] [--body "..."]\n');
|
|
119
|
+
process.exit(2);
|
|
120
|
+
}
|
|
121
|
+
if (!TIERS.includes(tier)) fail(`unknown tier "${tier}" — one of ${TIERS.join(', ')}`);
|
|
122
|
+
if (!/^[a-z0-9][a-z0-9-]*$/.test(slug)) fail(`slug must be kebab-case ([a-z0-9-]): "${slug}"`);
|
|
123
|
+
|
|
124
|
+
const root = wikiRoot();
|
|
125
|
+
const dir = path.join(root, tier);
|
|
126
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
127
|
+
const dest = path.join(dir, `${slug}.md`);
|
|
128
|
+
if (fs.existsSync(dest)) fail(`page already exists, refusing to overwrite: ${path.relative(root, dest)}`);
|
|
129
|
+
|
|
130
|
+
const description = flag('description') || '';
|
|
131
|
+
const body = flag('body') || '';
|
|
132
|
+
const page = [
|
|
133
|
+
'---',
|
|
134
|
+
`name: ${slug}`,
|
|
135
|
+
`description: ${description}`,
|
|
136
|
+
`tier: ${tier}`,
|
|
137
|
+
'source: wiki-cli-write-page',
|
|
138
|
+
'---',
|
|
139
|
+
'',
|
|
140
|
+
`# ${slug}`,
|
|
141
|
+
'',
|
|
142
|
+
body,
|
|
143
|
+
'',
|
|
144
|
+
].join('\n');
|
|
145
|
+
|
|
146
|
+
fs.writeFileSync(dest, page);
|
|
147
|
+
process.stdout.write(JSON.stringify({ written: path.relative(root, dest), tier }, null, 2) + '\n');
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function main() {
|
|
151
|
+
const cmd = process.argv[2];
|
|
152
|
+
switch (cmd) {
|
|
153
|
+
case 'query':
|
|
154
|
+
case 'recall':
|
|
155
|
+
return runQuery();
|
|
156
|
+
case 'write-page':
|
|
157
|
+
return runWritePage();
|
|
158
|
+
default:
|
|
159
|
+
process.stdout.write('Usage: node .wrxn/wiki.cjs <query|recall|write-page> ...\n');
|
|
160
|
+
process.exit(cmd ? 2 : 0);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
main();
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# AIS-OS intake
|
|
2
|
+
|
|
3
|
+
The canonical operator intake. Fill each answer, then run `wrxn onboard` (or the `onboard` skill) to
|
|
4
|
+
scaffold your Day-1 operator file set under `context/`. Idempotent — edit and re-run any time.
|
|
5
|
+
|
|
6
|
+
## Q1 — Who are you, what do you sell, who do you sell it to?
|
|
7
|
+
|
|
8
|
+
[Your answer here]
|
|
9
|
+
|
|
10
|
+
## Q2 — Paste 1-2 things you've written recently (raw, unedited — voice samples)
|
|
11
|
+
|
|
12
|
+
[Your answer here]
|
|
13
|
+
|
|
14
|
+
## Q3 — Your 2-3 biggest priorities for the next 90 days
|
|
15
|
+
|
|
16
|
+
[Your answer here]
|
|
17
|
+
|
|
18
|
+
## Q4 — Where does revenue land, and where is it tracked?
|
|
19
|
+
|
|
20
|
+
[Your answer here]
|
|
21
|
+
|
|
22
|
+
## Q5 — Where do you talk to customers, your team, and the outside world?
|
|
23
|
+
|
|
24
|
+
[Your answer here]
|
|
25
|
+
|
|
26
|
+
## Q6 — Where do recordings, notes, and important docs live?
|
|
27
|
+
|
|
28
|
+
[Your answer here]
|
|
29
|
+
|
|
30
|
+
## Q7 — The one task that eats your week, and where you track work
|
|
31
|
+
|
|
32
|
+
[Your answer here]
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Connections registry
|
|
2
|
+
|
|
3
|
+
Every system your AIOS can reach — the single source of truth for what's wired in. Add a row when you
|
|
4
|
+
connect a tool; `level-up` and `audit` read this to find gaps.
|
|
5
|
+
|
|
6
|
+
| System | Category | Status | Notes |
|
|
7
|
+
|--------|----------|--------|-------|
|
|
8
|
+
| _(none yet)_ | | | run `wrxn onboard` / the onboard skill to seed this from your intake |
|
|
9
|
+
|
|
10
|
+
## Categories (the Four-Cs domains)
|
|
11
|
+
|
|
12
|
+
- **Capture** — where work + ideas land (tasks, notes, docs)
|
|
13
|
+
- **Communicate** — email, chat, DMs, calendar
|
|
14
|
+
- **Convert** — revenue, CRM, billing
|
|
15
|
+
- **Coordinate** — team, recordings, automation
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Decisions Log
|
|
2
|
+
|
|
3
|
+
Append-only record of meaningful decisions and why they were made. Append whenever you decide
|
|
4
|
+
something worth remembering; `level-up` Phase 2 also writes scoped automation specs here.
|
|
5
|
+
|
|
6
|
+
**Format per entry:**
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
## YYYY-MM-DD — <short title>
|
|
10
|
+
|
|
11
|
+
**Decision:** <what was decided>
|
|
12
|
+
**Why:** <the reasoning / what it rules out>
|
|
13
|
+
**Revisit:** <when/what would change this>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
<!-- entries below, newest first -->
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Domain Docs
|
|
2
|
+
|
|
3
|
+
How the engineering skills should consume this repo's domain documentation when exploring the codebase.
|
|
4
|
+
|
|
5
|
+
## Before exploring, read these
|
|
6
|
+
|
|
7
|
+
- **`CONTEXT.md`** at the repo root, or
|
|
8
|
+
- **`CONTEXT-MAP.md`** at the repo root if it exists — it points at one `CONTEXT.md` per context. Read each one relevant to the topic.
|
|
9
|
+
- **`docs/adr/`** — read ADRs that touch the area you're about to work in. In multi-context repos, also check `src/<context>/docs/adr/` for context-scoped decisions.
|
|
10
|
+
|
|
11
|
+
If any of these files don't exist, **proceed silently**. Don't flag their absence; don't suggest creating them upfront. The producer skill (`grill-with-docs`) creates them lazily when terms or decisions actually get resolved.
|
|
12
|
+
|
|
13
|
+
## File structure
|
|
14
|
+
|
|
15
|
+
This install uses a **single-context** layout (most repos): one `CONTEXT.md` + `docs/adr/` at the repo root.
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/
|
|
19
|
+
├── CONTEXT.md
|
|
20
|
+
├── docs/adr/
|
|
21
|
+
│ ├── 0001-event-sourced-orders.md
|
|
22
|
+
│ └── 0002-postgres-for-write-model.md
|
|
23
|
+
└── src/
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
If this grows into a monorepo with separate contexts, add a `CONTEXT-MAP.md` at the root pointing to per-context `CONTEXT.md` files and the skills will switch to multi-context mode.
|
|
27
|
+
|
|
28
|
+
## Use the glossary's vocabulary
|
|
29
|
+
|
|
30
|
+
When your output names a domain concept (in an issue title, a refactor proposal, a hypothesis, a test name), use the term as defined in `CONTEXT.md`. Don't drift to synonyms the glossary explicitly avoids.
|
|
31
|
+
|
|
32
|
+
If the concept you need isn't in the glossary yet, that's a signal — either you're inventing language the project doesn't use (reconsider) or there's a real gap (note it for `grill-with-docs`).
|
|
33
|
+
|
|
34
|
+
## Flag ADR conflicts
|
|
35
|
+
|
|
36
|
+
If your output contradicts an existing ADR, surface it explicitly rather than silently overriding:
|
|
37
|
+
|
|
38
|
+
> _Contradicts ADR-0007 (event-sourced orders) — but worth reopening because…_
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Issue tracker: Local Markdown
|
|
2
|
+
|
|
3
|
+
Issues and PRDs for this repo live as markdown files in `.scratch/`. This is the
|
|
4
|
+
WRXN kernel default — a tracker that needs no remote and no `gh`/`glab` CLI.
|
|
5
|
+
|
|
6
|
+
## Conventions
|
|
7
|
+
|
|
8
|
+
- One feature per directory: `.scratch/<feature-slug>/`
|
|
9
|
+
- The PRD is `.scratch/<feature-slug>/PRD.md`
|
|
10
|
+
- Implementation issues are `.scratch/<feature-slug>/issues/<NN>-<slug>.md`, numbered from `01`
|
|
11
|
+
- Triage state is recorded as a `Status:` line near the top of each issue file (see `triage-labels.md` for the role strings)
|
|
12
|
+
- Comments and conversation history append to the bottom of the file under a `## Comments` heading
|
|
13
|
+
|
|
14
|
+
## When a skill says "publish to the issue tracker"
|
|
15
|
+
|
|
16
|
+
Create a new file under `.scratch/<feature-slug>/` (creating the directory if needed).
|
|
17
|
+
|
|
18
|
+
## When a skill says "fetch the relevant ticket"
|
|
19
|
+
|
|
20
|
+
Read the file at the referenced path. The user will normally pass the path or the issue number directly.
|
|
21
|
+
|
|
22
|
+
## Switching trackers
|
|
23
|
+
|
|
24
|
+
To use GitHub or GitLab issues instead, re-run `setup-matt-pocock-skills` and pick the
|
|
25
|
+
matching tracker — it will rewrite this file from the right template.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Triage Labels
|
|
2
|
+
|
|
3
|
+
The skills speak in terms of five canonical triage roles. This file maps those roles to the actual label strings used in this repo's issue tracker.
|
|
4
|
+
|
|
5
|
+
| Canonical role | Label in our tracker | Meaning |
|
|
6
|
+
| ----------------- | -------------------- | ---------------------------------------- |
|
|
7
|
+
| `needs-triage` | `needs-triage` | Maintainer needs to evaluate this issue |
|
|
8
|
+
| `needs-info` | `needs-info` | Waiting on reporter for more information |
|
|
9
|
+
| `ready-for-agent` | `ready-for-agent` | Fully specified, ready for an AFK agent |
|
|
10
|
+
| `ready-for-human` | `ready-for-human` | Requires human implementation |
|
|
11
|
+
| `wontfix` | `wontfix` | Will not be actioned |
|
|
12
|
+
|
|
13
|
+
When a skill mentions a role (e.g. "apply the AFK-ready triage label"), use the corresponding label string from this table.
|
|
14
|
+
|
|
15
|
+
In the local-markdown tracker (the kernel default), the "label" is the `Status:` line at the top of the issue file. Edit the right-hand column to match whatever vocabulary you actually use.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Operator Layer (workspace profile)
|
|
2
|
+
|
|
3
|
+
This file is laid ONLY by a `wrxn init --workspace` install — it is the representative marker of
|
|
4
|
+
the **workspace profile**. A `--project` install never receives it.
|
|
5
|
+
|
|
6
|
+
The workspace profile = the project profile (dev pipeline + intelligence layer + enforcement
|
|
7
|
+
boundary) **plus** the operator layer:
|
|
8
|
+
|
|
9
|
+
- onboarding + the decisions log
|
|
10
|
+
- the audit / level-up operating rituals
|
|
11
|
+
- the connections registry (the workspace nervous system — `wrxn connect`; see issue 21)
|
|
12
|
+
|
|
13
|
+
Project installs are the floor; workspace installs are the superset. This is a seeded file —
|
|
14
|
+
yours to edit; `wrxn update` never overwrites it.
|