@event4u/agent-config 2.17.0 → 2.19.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/.agent-src/commands/refine-ticket.md +3 -0
- package/.agent-src/personas/README.md +8 -0
- package/.agent-src/skills/refine-ticket/SKILL.md +3 -0
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.agent-src/user-types/README.md +124 -0
- package/.agent-src/user-types/_template/user-type.md +95 -0
- package/.agent-src/user-types/galabau-field-crew.md +100 -0
- package/.agent-src/user-types/metalworking-shop.md +105 -0
- package/.agent-src/user-types/truck-driver.md +113 -0
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +68 -0
- package/config/agent-settings.template.yml +7 -0
- package/docs/catalog.md +1 -1
- package/docs/contracts/adr-install-user-type-axis.md +107 -0
- package/docs/contracts/adr-mcp-runtime.md +128 -0
- package/docs/contracts/adr-user-types-axis.md +127 -0
- package/docs/contracts/init-telemetry.md +2 -3
- package/docs/contracts/user-type-schema.md +146 -0
- package/docs/getting-started-by-role.md +1 -1
- package/docs/recruits/_template.md +81 -0
- package/package.json +1 -1
- package/scripts/audit_user_type_axis.py +140 -0
- package/scripts/compress.py +48 -2
- package/scripts/install +9 -1
- package/scripts/install.py +81 -7
- package/scripts/install.sh +7 -0
- package/scripts/mcp_server/prompts.py +134 -2
- package/scripts/schemas/user-type-axis.schema.json +56 -0
- package/scripts/schemas/user-type.schema.json +35 -0
- package/scripts/skill_linter.py +139 -4
- package/scripts/skill_tools/audit_user_type_coverage.py +148 -0
- package/scripts/sync_agent_settings.py +6 -0
|
@@ -77,6 +77,9 @@ persona voices) plus the close-prompt. Stop there. Do **not** chain into
|
|
|
77
77
|
/refine-ticket PROJ-123
|
|
78
78
|
/refine-ticket # uses current branch
|
|
79
79
|
/refine-ticket --personas=+qa PROJ-123
|
|
80
|
+
/refine-ticket --user-type=galabau-field-crew PROJ-123
|
|
81
|
+
/refine-ticket --personas=+qa --user-type=truck-driver PROJ-123
|
|
82
|
+
/refine-ticket --user-type=metalworking-shop PROJ-123
|
|
80
83
|
/refine-ticket --fresh-eyes https://acme.atlassian.net/browse/PROJ-123
|
|
81
84
|
```
|
|
82
85
|
|
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
> expectations. Skills cite personas in a `personas:` frontmatter key.
|
|
6
6
|
> Users invoke them via `--personas=<id>`.
|
|
7
7
|
|
|
8
|
+
> For end-user-of-the-software lenses (galabau field crew, truck
|
|
9
|
+
> driver, metalworking shop), see the parallel
|
|
10
|
+
> [`user-types/`](../user-types/README.md) axis — personas describe
|
|
11
|
+
> **how** we review (methodology), user-types describe **who** we
|
|
12
|
+
> simulate (end user). They compose orthogonally on the CLI:
|
|
13
|
+
> `--personas=qa --user-type=truck-driver`. No existing persona moves
|
|
14
|
+
> to `user-types/`.
|
|
15
|
+
|
|
8
16
|
## Why this directory exists
|
|
9
17
|
|
|
10
18
|
Before personas, every multi-lens skill (`adversarial-review`,
|
|
@@ -240,6 +240,9 @@ open questions surfaced>
|
|
|
240
240
|
- **Critical Challenger** — <one paragraph>
|
|
241
241
|
- **AI Agent** — <one paragraph>
|
|
242
242
|
- **[qa]** — *(only when `--personas=+qa`)* <one paragraph>
|
|
243
|
+
- **User: <label>** — *(only when `--user-type=<id>`)* <one paragraph
|
|
244
|
+
citing Daily Workflow / Vocabulary / Operational Constraints /
|
|
245
|
+
Ticket Red Flags from the loaded user-type>
|
|
243
246
|
|
|
244
247
|
## Orchestration notes
|
|
245
248
|
|
|
@@ -39,7 +39,7 @@ schema_version: 1
|
|
|
39
39
|
# CI guard: a release bump of `package.json` must update this value
|
|
40
40
|
# in lockstep — see scripts/check_template_pin_drift.py (road-to-
|
|
41
41
|
# portable-runtime-and-update-check P3.3).
|
|
42
|
-
agent_config_version: "2.
|
|
42
|
+
agent_config_version: "2.18.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# User-types
|
|
2
|
+
|
|
3
|
+
> Reusable **end-user simulation lenses** as a first-class primitive,
|
|
4
|
+
> parallel to `personas/`. A user-type declares a *who*: a real
|
|
5
|
+
> end-user of the software under review (a galabau field crew, a
|
|
6
|
+
> truck driver, a metalworking shop). Skills consume them via
|
|
7
|
+
> `--user-type=<id>` on the CLI.
|
|
8
|
+
|
|
9
|
+
## Why this directory exists
|
|
10
|
+
|
|
11
|
+
`personas/` answered one question well: *how* we review (qa,
|
|
12
|
+
senior-engineer, critical-challenger, product-owner). It collapsed
|
|
13
|
+
when "personas" like `galabau-field-crew` or `truck-driver` started
|
|
14
|
+
landing — those are not review methodologies, they are the end-user
|
|
15
|
+
viewpoint a methodology reviewer should adopt while reviewing.
|
|
16
|
+
|
|
17
|
+
The two axes compose orthogonally:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/refine-ticket --personas=qa --user-type=truck-driver PROJ-123
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
QA methodology applied through a truck-driver end-user lens. The
|
|
24
|
+
split is locked in [`../../docs/contracts/adr-user-types-axis.md`](../../docs/contracts/adr-user-types-axis.md).
|
|
25
|
+
|
|
26
|
+
## What a user-type is — and is NOT
|
|
27
|
+
|
|
28
|
+
- **Is**: a small Markdown file declaring an end-user simulation —
|
|
29
|
+
workflow, vocabulary, operational constraints, the questions only
|
|
30
|
+
this viewpoint would ask.
|
|
31
|
+
- **Is NOT**: a persona. Personas describe review methodology, never
|
|
32
|
+
an end-user viewpoint.
|
|
33
|
+
- **Is NOT**: an operational manual. User-types are review lenses
|
|
34
|
+
only — they flag ticket gaps, they never instruct a trade. No
|
|
35
|
+
welding procedures, no electrical work, no structural advice, no
|
|
36
|
+
dangerous how-to. The Anti-Patterns section in every file
|
|
37
|
+
encodes this floor.
|
|
38
|
+
- **Is NOT**: an install-time filter. The vocabulary overlaps with
|
|
39
|
+
the install-time `user-types/` axis at the package root (see
|
|
40
|
+
[`../../docs/contracts/adr-install-user-type-axis.md`](../../docs/contracts/adr-install-user-type-axis.md)),
|
|
41
|
+
but the two live in different directories and consume different
|
|
42
|
+
config keys. Same word, different layer — by design.
|
|
43
|
+
|
|
44
|
+
## Schema
|
|
45
|
+
|
|
46
|
+
Locked in [`../../docs/contracts/user-type-schema.md`](../../docs/contracts/user-type-schema.md).
|
|
47
|
+
|
|
48
|
+
- **Spine** — 7 sections (Focus · Daily Workflow · Vocabulary ·
|
|
49
|
+
Operational Constraints · Unique Questions · Ticket Red Flags ·
|
|
50
|
+
Anti-Patterns), ≤ 120 lines.
|
|
51
|
+
- **Frontmatter** — `id · kind: user-type · description · version · source`.
|
|
52
|
+
|
|
53
|
+
Run `task lint-skills` to enforce the schema, the size budget, and
|
|
54
|
+
the Anti-Generic Quality Bar.
|
|
55
|
+
|
|
56
|
+
## Anti-Generic Quality Bar (merge gate)
|
|
57
|
+
|
|
58
|
+
Every user-type encodes **≥ 5 concrete, domain-specific review
|
|
59
|
+
points** across `Daily Workflow`, `Vocabulary`, `Operational
|
|
60
|
+
Constraints`, and `Ticket Red Flags`. Generic prose is REJECTED:
|
|
61
|
+
|
|
62
|
+
- ❌ "consider mobile usability" → ✅ "capacitive touch fails with
|
|
63
|
+
wet leather gloves at 4 °C; tap targets ≥ 60 px or voice command"
|
|
64
|
+
- ❌ "think about offline" → ✅ "no signal in cellar yards; queue
|
|
65
|
+
changes locally, conflict-resolve on the morning brief"
|
|
66
|
+
|
|
67
|
+
Reviewer test: a generic reviewer persona could not have produced
|
|
68
|
+
the `Unique Questions` or `Ticket Red Flags` of this file. If they
|
|
69
|
+
could, the file is generic and must be rewritten.
|
|
70
|
+
|
|
71
|
+
## Guardrails (encoded in every Anti-Patterns block)
|
|
72
|
+
|
|
73
|
+
User-types are review lenses, not operational manuals. Every file's
|
|
74
|
+
`## Anti-Patterns` section MUST explicitly forbid:
|
|
75
|
+
|
|
76
|
+
- Trade-execution instructions (welding procedure, electrical work,
|
|
77
|
+
structural advice, anything that could harm if followed)
|
|
78
|
+
- Dangerous how-to (chemical handling, equipment operation,
|
|
79
|
+
work-at-height procedures)
|
|
80
|
+
- Medical / legal / engineering advice requiring a licensed
|
|
81
|
+
practitioner
|
|
82
|
+
|
|
83
|
+
Allowed: workflow realism, ticket gap analysis, terminology
|
|
84
|
+
correction, mobile / offline / safety / approval signals as
|
|
85
|
+
ticket-requirement signals.
|
|
86
|
+
|
|
87
|
+
## How skills use user-types
|
|
88
|
+
|
|
89
|
+
CLI-only in v1 — skills do NOT declare a default `user-types:`
|
|
90
|
+
frontmatter key. The migration path to v2 (skill-level default key)
|
|
91
|
+
is documented in [`../../docs/contracts/adr-user-types-axis.md § Consequences`](../../docs/contracts/adr-user-types-axis.md).
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
/refine-ticket --user-type=truck-driver PROJ-123
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
If `--user-type=` is omitted, no end-user lens applies — persona
|
|
98
|
+
review proceeds without simulation.
|
|
99
|
+
|
|
100
|
+
## Authoring rules
|
|
101
|
+
|
|
102
|
+
- Every user-type is drafted via the `artifact-drafting-protocol` rule.
|
|
103
|
+
- Every user-type must pass the Anti-Generic Quality Bar (≥ 5
|
|
104
|
+
concrete review points, ≥ 3 Unique Questions falsifiable against a
|
|
105
|
+
ticket).
|
|
106
|
+
- Project-specific user-types live in the consumer repo
|
|
107
|
+
(`.agent-src/user-types/` overrides), never in this package — the
|
|
108
|
+
three seeds shipped here are illustrative reference content.
|
|
109
|
+
- Template: [`./_template/user-type.md`](./_template/user-type.md) (7 sections, ≤ 120 lines).
|
|
110
|
+
|
|
111
|
+
## No-move policy
|
|
112
|
+
|
|
113
|
+
No existing persona moves into this directory. The three seeds
|
|
114
|
+
shipped here (`galabau-field-crew`, `metalworking-shop`,
|
|
115
|
+
`truck-driver`) were born as user-types. Existing personas stay as
|
|
116
|
+
personas. See [`../../docs/contracts/adr-user-types-axis.md § Migration`](../../docs/contracts/adr-user-types-axis.md).
|
|
117
|
+
|
|
118
|
+
## Related
|
|
119
|
+
|
|
120
|
+
- [`../../docs/contracts/user-type-schema.md`](../../docs/contracts/user-type-schema.md) — locked schema
|
|
121
|
+
- [`../../docs/contracts/adr-user-types-axis.md`](../../docs/contracts/adr-user-types-axis.md) — the axis split decision
|
|
122
|
+
- [`../../docs/contracts/adr-install-user-type-axis.md`](../../docs/contracts/adr-install-user-type-axis.md) — install-time `user_type` axis (distinct layer)
|
|
123
|
+
- [`../personas/README.md`](../personas/README.md) — sister axis (methodology vs end-user)
|
|
124
|
+
- [`../rules/artifact-drafting-protocol.md`](../rules/artifact-drafting-protocol.md) — mandatory per new user-type
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: {user-type-id}
|
|
3
|
+
kind: user-type
|
|
4
|
+
description: "One sentence — who this lens simulates and the operational reality they bring; ≤ 160 chars."
|
|
5
|
+
version: "1.0"
|
|
6
|
+
source: project
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# {Human-readable user-type name}
|
|
10
|
+
|
|
11
|
+
## Focus
|
|
12
|
+
|
|
13
|
+
One paragraph. Who this lens is, the operational context they work
|
|
14
|
+
in (site, shop, vehicle, office), and what no persona catches.
|
|
15
|
+
State the workflow shape and the time pressure that frames every
|
|
16
|
+
decision they make.
|
|
17
|
+
|
|
18
|
+
End with one sentence pinning the boundary: this lens is a **review
|
|
19
|
+
lens only**, never an operational instruction source. No trade
|
|
20
|
+
execution. No dangerous how-to.
|
|
21
|
+
|
|
22
|
+
## Daily Workflow
|
|
23
|
+
|
|
24
|
+
Concrete day-shape. What happens at 06:00, 10:00, 15:00. Who they
|
|
25
|
+
talk to, what they touch, what they wait for. Avoid generic prose
|
|
26
|
+
("they manage tasks"). Encode the actual rhythm.
|
|
27
|
+
|
|
28
|
+
- {Morning routine — concrete trigger, tool, deliverable.}
|
|
29
|
+
- {Mid-day workflow — concrete trigger, tool, deliverable.}
|
|
30
|
+
- {End-of-day proof / close-out — concrete artefact + verification step.}
|
|
31
|
+
|
|
32
|
+
## Vocabulary
|
|
33
|
+
|
|
34
|
+
Domain terms the software must use (or must NOT substitute).
|
|
35
|
+
Bilingual where the trade is bilingual. Plain-language over
|
|
36
|
+
engineer-language where the user is non-technical.
|
|
37
|
+
|
|
38
|
+
- {Term 1 — what it means, why the substitution fails.}
|
|
39
|
+
- {Term 2.}
|
|
40
|
+
- {Term 3.}
|
|
41
|
+
|
|
42
|
+
## Operational Constraints
|
|
43
|
+
|
|
44
|
+
Each constraint is a UI / flow signal, not generic empathy.
|
|
45
|
+
|
|
46
|
+
- {Mobile / offline / connectivity / dead-zone constraint.}
|
|
47
|
+
- {PPE / gloves / noise / lighting / weather constraint.}
|
|
48
|
+
- {Time-pressure / hours-of-service / break-window constraint.}
|
|
49
|
+
- {Hardware constraint — device, screen size, input mode.}
|
|
50
|
+
- {Optional: legal / safety / certification constraint.}
|
|
51
|
+
|
|
52
|
+
## Unique Questions
|
|
53
|
+
|
|
54
|
+
Three or more questions no persona asks verbatim. Each must be
|
|
55
|
+
falsifiable against the ticket under review.
|
|
56
|
+
|
|
57
|
+
- {Question 1 — direct, scoped, answerable from the ticket.}
|
|
58
|
+
- {Question 2.}
|
|
59
|
+
- {Question 3.}
|
|
60
|
+
- {Optional Question 4.}
|
|
61
|
+
|
|
62
|
+
## Ticket Red Flags
|
|
63
|
+
|
|
64
|
+
What this lens flags as missing or unrealistic when reviewing a
|
|
65
|
+
ticket. Bullet list — each item names a concrete signal a generic
|
|
66
|
+
reviewer would miss.
|
|
67
|
+
|
|
68
|
+
- {Red flag 1 — concrete signal + why it matters in this domain.}
|
|
69
|
+
- {Red flag 2.}
|
|
70
|
+
- {Red flag 3.}
|
|
71
|
+
|
|
72
|
+
## Anti-Patterns
|
|
73
|
+
|
|
74
|
+
Non-negotiable. Guardrails are encoded here.
|
|
75
|
+
|
|
76
|
+
- **Review-only, never operational.** No trade execution
|
|
77
|
+
instructions (welding procedure, electrical work, structural
|
|
78
|
+
advice). No dangerous how-to. No medical / legal / engineering
|
|
79
|
+
advice that requires a licensed practitioner.
|
|
80
|
+
- **No generic prose.** "Consider usability" / "think about offline"
|
|
81
|
+
fails the Anti-Generic Quality Bar — every observation cites a
|
|
82
|
+
concrete signal.
|
|
83
|
+
- {Anti-pattern 3 — domain-specific failure mode this lens refuses to validate.}
|
|
84
|
+
- {Anti-pattern 4 — optional.}
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
*Author note (delete before publishing): this template targets the
|
|
89
|
+
7-section spine locked in
|
|
90
|
+
[`docs/contracts/user-type-schema.md`](../../../docs/contracts/user-type-schema.md).
|
|
91
|
+
Stay within the **≤ 120 line** budget (file total, including
|
|
92
|
+
frontmatter). Replace every `{placeholder}` with concrete content
|
|
93
|
+
that passes the Anti-Generic Quality Bar (≥ 5 concrete review
|
|
94
|
+
points; ≥ 3 Unique Questions). Run `task lint-skills` before
|
|
95
|
+
commit.*
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: galabau-field-crew
|
|
3
|
+
kind: user-type
|
|
4
|
+
description: "Landscape-build crew on site — gloves, mud, no-signal, billable-photo proofs, bilingual plain-German vocabulary."
|
|
5
|
+
version: "1.0"
|
|
6
|
+
source: project
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Galabau Field Crew
|
|
10
|
+
|
|
11
|
+
## Focus
|
|
12
|
+
|
|
13
|
+
Two- to four-person crew on a landscape / garden-build site —
|
|
14
|
+
paver-laying, retaining walls, planting, irrigation. Phone or
|
|
15
|
+
rugged tablet in a pouch, gloves on, lifting something heavy every
|
|
16
|
+
fifteen minutes. Workday shaped by weather, delivery slots, and
|
|
17
|
+
customer arriving unannounced for "just one more thing". No
|
|
18
|
+
reliable signal on half the sites. Every customer-requested change
|
|
19
|
+
is either billable later or silently swallowed; documentation at
|
|
20
|
+
the moment of change is the only way that decision survives.
|
|
21
|
+
|
|
22
|
+
Review lens only, never operational instruction source. No
|
|
23
|
+
paver-laying procedure, no soil-prep chemistry, no structural
|
|
24
|
+
advice on retaining walls.
|
|
25
|
+
|
|
26
|
+
## Daily Workflow
|
|
27
|
+
|
|
28
|
+
- 06:30 — depot pickup, materials loaded, route confirmed; lead
|
|
29
|
+
reads day plan once, on phone, gloves off.
|
|
30
|
+
- 07:30–11:30 — execution on site; phone back in pouch. UI reads
|
|
31
|
+
happen at coffee breaks or when customer interrupts.
|
|
32
|
+
- 11:30 — billable-change moment: customer asks for an extra step,
|
|
33
|
+
crew lead captures it as timestamped photo + short note +
|
|
34
|
+
ideally signature, **before** next task starts.
|
|
35
|
+
- 15:30 — end-of-day proof: photo of finished section, geotagged,
|
|
36
|
+
uploaded if signal exists, queued offline if not.
|
|
37
|
+
- 17:00 — depot return; office reconciles day from photos +
|
|
38
|
+
notes, not from memory.
|
|
39
|
+
|
|
40
|
+
## Vocabulary
|
|
41
|
+
|
|
42
|
+
- **Aufmass** — measured-on-site quantity that becomes invoice
|
|
43
|
+
basis; never substitute with "estimate" or "measurement".
|
|
44
|
+
- **Nachtrag** — billable change-request added to a running job;
|
|
45
|
+
losing one = losing money, not just data.
|
|
46
|
+
- **Sauberkeitsschicht** — gravel layer under pavers; plain-German,
|
|
47
|
+
not "base course".
|
|
48
|
+
- **Plain-German over engineer-German.** Crew is bilingual (often
|
|
49
|
+
DE / PL / TR); noun must be the one on the delivery slip, not
|
|
50
|
+
the one in the BOQ.
|
|
51
|
+
|
|
52
|
+
## Operational Constraints
|
|
53
|
+
|
|
54
|
+
- **No signal on half the sites.** Every write must queue and sync;
|
|
55
|
+
every read must work from cache. Conflict resolution on sync is
|
|
56
|
+
a ticket requirement, not a nice-to-have.
|
|
57
|
+
- **Capacitive touch fails with wet or dirty gloves.** Primary
|
|
58
|
+
flows survive with stylus, knuckle, or large-target taps. No
|
|
59
|
+
pinch-zoom on the critical path.
|
|
60
|
+
- **Photo is the proof, not the form.** A billable-change flow
|
|
61
|
+
needing three text fields before camera opens loses changes
|
|
62
|
+
silently — crew defers, then forgets.
|
|
63
|
+
- **Screen washout in direct sun.** High-contrast mode on by
|
|
64
|
+
default for outdoor flows, never opt-in via settings.
|
|
65
|
+
- **Rugged hardware, slow CPU.** Animations and skeleton loaders
|
|
66
|
+
burn battery; crew runs 10+ hours per charge on the device.
|
|
67
|
+
|
|
68
|
+
## Unique Questions
|
|
69
|
+
|
|
70
|
+
- Does this flow survive a 4-hour offline window plus a sync with
|
|
71
|
+
conflicting edits from the office?
|
|
72
|
+
- Can a gloved hand complete the primary action in one tap from
|
|
73
|
+
the home screen without typing?
|
|
74
|
+
- Is there a photo-first path for capturing a billable change, or
|
|
75
|
+
does the form block the camera?
|
|
76
|
+
- Is the noun on screen the one written on the delivery slip, in
|
|
77
|
+
the language the crew actually uses?
|
|
78
|
+
|
|
79
|
+
## Ticket Red Flags
|
|
80
|
+
|
|
81
|
+
- "User enters …" without specifying input mode — gloves rule out
|
|
82
|
+
the keyboard on the critical path.
|
|
83
|
+
- Sync described as "auto" with no conflict-resolution UI sketched.
|
|
84
|
+
- High-contrast / outdoor visibility treated as a settings toggle
|
|
85
|
+
rather than the default for outdoor flows.
|
|
86
|
+
- No mention of what happens when the customer signature step is
|
|
87
|
+
refused or skipped.
|
|
88
|
+
|
|
89
|
+
## Anti-Patterns
|
|
90
|
+
|
|
91
|
+
- **Review-only, never operational.** No paver-laying procedure,
|
|
92
|
+
soil chemistry, structural retaining-wall advice, or anything a
|
|
93
|
+
licensed Galabauer must sign off.
|
|
94
|
+
- **No generic prose.** "Consider offline support" fails the
|
|
95
|
+
Anti-Generic Quality Bar — every observation cites a concrete
|
|
96
|
+
signal (gloves, signal-loss, Nachtrag, Aufmass).
|
|
97
|
+
- **No engineer-vocabulary substitution.** Renaming Nachtrag to
|
|
98
|
+
"change request" in the UI breaks the billing chain.
|
|
99
|
+
- **No photo-after-form flows.** Photo must be reachable in one
|
|
100
|
+
tap from the moment customer asks for the change.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: metalworking-shop
|
|
3
|
+
kind: user-type
|
|
4
|
+
description: "Shop-floor metalworking team — job travelers, material certs, machine-time gates, PPE/noise constraints on UI."
|
|
5
|
+
version: "1.0"
|
|
6
|
+
source: project
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Metalworking Shop
|
|
10
|
+
|
|
11
|
+
## Focus
|
|
12
|
+
|
|
13
|
+
Small-to-mid metalworking shop — laser-cut, press-brake, weld,
|
|
14
|
+
finish. Two surfaces: shop-floor tablets bolted near machines
|
|
15
|
+
(loud, dirty, gloves) and an office desktop where quoting,
|
|
16
|
+
scheduling, and material-cert tracking happen. Shop runs on **job
|
|
17
|
+
travelers** (route cards) — one per job following the work through
|
|
18
|
+
every station, getting stamped, ending in the shipping bay.
|
|
19
|
+
Material certificates (heat numbers, mill certs) must trace from
|
|
20
|
+
incoming bar stock through to the customer; losing the chain
|
|
21
|
+
breaks the audit and can void the order.
|
|
22
|
+
|
|
23
|
+
Review lens only, never operational instruction source. No
|
|
24
|
+
welding-procedure spec, no electrical guidance, no
|
|
25
|
+
structural-engineering advice. Trade execution stays with the
|
|
26
|
+
certified welder, the EHS officer, and the engineer.
|
|
27
|
+
|
|
28
|
+
## Daily Workflow
|
|
29
|
+
|
|
30
|
+
- 06:00 — shift starts, lead reviews day's travelers at office
|
|
31
|
+
desktop; priority shifts printed and pinned at the station.
|
|
32
|
+
- 07:00–15:30 — execution per station; each station scans the
|
|
33
|
+
traveler QR or punches job number on tablet to start / pause /
|
|
34
|
+
complete time on that step.
|
|
35
|
+
- Material check-in — incoming bar stock photographed with mill
|
|
36
|
+
cert; heat number bound to lot at moment of receipt, not later
|
|
37
|
+
from memory.
|
|
38
|
+
- Safety sign-off — process steps requiring PPE or second-person
|
|
39
|
+
check (overhead crane, confined-space weld) cannot start until
|
|
40
|
+
sign-off is recorded on the tablet.
|
|
41
|
+
- 15:30 — end-of-shift, lead reconciles open travelers, flags any
|
|
42
|
+
step where the material-cert chain is broken.
|
|
43
|
+
|
|
44
|
+
## Vocabulary
|
|
45
|
+
|
|
46
|
+
- **Job traveler / route card** — single canonical record that
|
|
47
|
+
moves with the part; never substitute with "ticket" or "task".
|
|
48
|
+
- **Heat number / mill cert** — material identity; lose the link
|
|
49
|
+
and the part is unsellable to a regulated customer.
|
|
50
|
+
- **Sign-off** — recorded, named, timestamped; "approved" without
|
|
51
|
+
a name fails audit.
|
|
52
|
+
- **Setup vs run time** — booked separately on the machine;
|
|
53
|
+
merging them destroys costing accuracy.
|
|
54
|
+
|
|
55
|
+
## Operational Constraints
|
|
56
|
+
|
|
57
|
+
- **Shop-floor tablet bolted at the station.** Two-arm reach,
|
|
58
|
+
gloves on, noise > 85 dB → no voice input, large tap targets,
|
|
59
|
+
high contrast on by default.
|
|
60
|
+
- **PPE prevents fine touch.** Welding gloves + safety glasses;
|
|
61
|
+
drop-down pickers with > 6 options are a fail mode.
|
|
62
|
+
- **Machine-time is money.** A flow adding 30 seconds per
|
|
63
|
+
job-step start, run 200 times/day, costs the shop one
|
|
64
|
+
machine-hour per shift.
|
|
65
|
+
- **Material-cert chain is regulatory.** Every step touching
|
|
66
|
+
material must capture or carry the heat-number link; breaking
|
|
67
|
+
it silently is the worst failure mode.
|
|
68
|
+
- **Two-surface split.** Office desktop has Excel-grade density;
|
|
69
|
+
shop tablet has one-action-per-screen. Same flow cannot share
|
|
70
|
+
a layout.
|
|
71
|
+
|
|
72
|
+
## Unique Questions
|
|
73
|
+
|
|
74
|
+
- Does this flow carry the heat-number / material-cert link from
|
|
75
|
+
receipt to ship, with no manual re-entry step that can drop it?
|
|
76
|
+
- Can a gloved welder complete the station start / pause / end in
|
|
77
|
+
one tap each, without picking from a long drop-down?
|
|
78
|
+
- Is the safety-sign-off step a hard prerequisite enforced by the
|
|
79
|
+
system, or a soft reminder a tired operator can dismiss?
|
|
80
|
+
- Does the layout adapt between bolted-tablet (shop) and desktop
|
|
81
|
+
(office), or is one surface compromised to match the other?
|
|
82
|
+
|
|
83
|
+
## Ticket Red Flags
|
|
84
|
+
|
|
85
|
+
- "User selects job from dropdown" — long list, gloves, no QR
|
|
86
|
+
alternative.
|
|
87
|
+
- Material-cert mentioned only at receipt, not propagated through
|
|
88
|
+
the route.
|
|
89
|
+
- Setup time and run time collapsed into a single "time on job"
|
|
90
|
+
field.
|
|
91
|
+
- Safety sign-off treated as optional metadata rather than a gate.
|
|
92
|
+
- One layout described for both surfaces without saying which.
|
|
93
|
+
|
|
94
|
+
## Anti-Patterns
|
|
95
|
+
|
|
96
|
+
- **Review-only, never operational.** No welding procedure (WPS),
|
|
97
|
+
no electrical work, no PPE selection guidance, no structural or
|
|
98
|
+
fatigue-engineering advice — those require certified humans.
|
|
99
|
+
- **No generic prose.** "Consider shop-floor usability" fails the
|
|
100
|
+
Anti-Generic Quality Bar — every observation cites traveler,
|
|
101
|
+
heat number, sign-off, machine-time, or PPE.
|
|
102
|
+
- **No collapsing setup-and-run time.** Costing depends on the
|
|
103
|
+
split; merging it for "UI simplicity" destroys the model.
|
|
104
|
+
- **No silent loss of material-cert link.** A flow that lets the
|
|
105
|
+
chain break without an audit signal is rejected.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: truck-driver
|
|
3
|
+
kind: user-type
|
|
4
|
+
description: "Commercial truck driver — voice-first, hours-of-service gated, dead-zone tolerant, photo+GPS proof-of-delivery."
|
|
5
|
+
version: "1.0"
|
|
6
|
+
source: project
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Truck Driver
|
|
10
|
+
|
|
11
|
+
## Focus
|
|
12
|
+
|
|
13
|
+
Commercial truck driver doing regional or long-haul delivery —
|
|
14
|
+
typically single driver, phone or in-cab tablet on a mount, gloves
|
|
15
|
+
optional but hands often busy with the wheel, paperwork, or a
|
|
16
|
+
pallet jack. Day is gated by **hours-of-service (HOS)** — legally
|
|
17
|
+
bounded driving and rest windows that cannot be ignored without
|
|
18
|
+
losing the licence. Cargo moves through warehouses, loading docks,
|
|
19
|
+
customer yards; signal drops in tunnels, basements, rural
|
|
20
|
+
stretches. Proof-of-delivery (photo + signature + GPS + timestamp)
|
|
21
|
+
is the moment the invoice becomes collectable.
|
|
22
|
+
|
|
23
|
+
Review lens only, never operational instruction source. No driving
|
|
24
|
+
advice, no HOS legal interpretation, no vehicle-maintenance
|
|
25
|
+
guidance, no hazmat procedure. Trade execution stays with the
|
|
26
|
+
dispatcher, the safety officer, and the certified driver-trainer.
|
|
27
|
+
|
|
28
|
+
## Daily Workflow
|
|
29
|
+
|
|
30
|
+
- 05:00 — pre-trip inspection, vehicle check captured on tablet;
|
|
31
|
+
driver swipes into HOS clock at start of duty.
|
|
32
|
+
- 06:00 — first loading-dock arrival; wait time on the dock can be
|
|
33
|
+
15 minutes or 3 hours; status (waiting / loading / loaded)
|
|
34
|
+
matters for billing and HOS attribution.
|
|
35
|
+
- 07:30 — driving: device must not require typing or precise taps
|
|
36
|
+
while in motion; voice input or large single-tap actions only.
|
|
37
|
+
- Multiple stops — route may reorder mid-day (cancelled stop, new
|
|
38
|
+
rush stop); ETA must recalc and propagate to the customer
|
|
39
|
+
without driver intervention beyond confirming.
|
|
40
|
+
- Per delivery — photo of the pallet, customer signature
|
|
41
|
+
on-screen, GPS pin, timestamp; the four-tuple is the invoice
|
|
42
|
+
trigger.
|
|
43
|
+
- End of duty — HOS clock closes; if next break-window starts
|
|
44
|
+
mid-route, system warns **before** the driver commits.
|
|
45
|
+
|
|
46
|
+
## Vocabulary
|
|
47
|
+
|
|
48
|
+
- **HOS (hours-of-service)** — legally enforced driving / rest
|
|
49
|
+
windows; not "shift hours" or "working time".
|
|
50
|
+
- **POD (proof-of-delivery)** — the photo + signature + GPS +
|
|
51
|
+
timestamp four-tuple; missing one element = unbilled delivery.
|
|
52
|
+
- **Dock dwell / detention** — wait time at a dock, often billable
|
|
53
|
+
to the shipper; capturing the timestamps is the negotiation
|
|
54
|
+
evidence.
|
|
55
|
+
- **Bill of lading (BOL)** — paper or electronic; the legal cargo
|
|
56
|
+
manifest, not a "shipment summary".
|
|
57
|
+
|
|
58
|
+
## Operational Constraints
|
|
59
|
+
|
|
60
|
+
- **Driving-while-using is prohibited.** No typing flow on the
|
|
61
|
+
critical path while in motion; voice or large single-tap only.
|
|
62
|
+
Anything else risks the licence and the company.
|
|
63
|
+
- **HOS is hard law.** A UI that lets the driver accept a stop
|
|
64
|
+
that would breach the remaining break-window is rejected — the
|
|
65
|
+
system warns first, dispatcher reroutes.
|
|
66
|
+
- **Dead zones are routine.** Tunnels, basements, rural roads;
|
|
67
|
+
every write queues, every read works from cache, and POD
|
|
68
|
+
uploads sync with photo intact when signal returns.
|
|
69
|
+
- **One-handed operation.** Other hand on the wheel, paperwork,
|
|
70
|
+
or pallet jack; bottom-thumb-reachable primary actions, no
|
|
71
|
+
precision drag.
|
|
72
|
+
- **Cold / wet / glare.** Outdoor docks in winter; gloves on,
|
|
73
|
+
screen wet, sun directly on the display — same outdoor-default
|
|
74
|
+
high-contrast as the field-crew lens.
|
|
75
|
+
|
|
76
|
+
## Unique Questions
|
|
77
|
+
|
|
78
|
+
- Does the primary flow work hands-busy at a loading dock, with
|
|
79
|
+
voice or one large tap, and not collapse if the connection
|
|
80
|
+
drops mid-step?
|
|
81
|
+
- Does the POD step capture photo + signature + GPS + timestamp
|
|
82
|
+
in a single offline-resilient action, or are they four separate
|
|
83
|
+
forms that can each drop?
|
|
84
|
+
- Does the system block or warn before the driver accepts a stop
|
|
85
|
+
that would breach the remaining HOS break-window?
|
|
86
|
+
- Is dock-dwell time captured automatically from arrival to
|
|
87
|
+
loaded, or does it rely on the driver remembering to tap?
|
|
88
|
+
|
|
89
|
+
## Ticket Red Flags
|
|
90
|
+
|
|
91
|
+
- "Driver enters …" with text input on the in-motion path.
|
|
92
|
+
- POD described as a single field rather than a four-element
|
|
93
|
+
bundle (photo + signature + GPS + timestamp).
|
|
94
|
+
- HOS treated as informational ("show remaining hours") rather
|
|
95
|
+
than a constraint on what stops can be accepted.
|
|
96
|
+
- Sync described as online-only; no queue + retry sketched for
|
|
97
|
+
dead-zone delivery.
|
|
98
|
+
- Dock-dwell capture left to manual tap with no arrival-trigger
|
|
99
|
+
fallback.
|
|
100
|
+
|
|
101
|
+
## Anti-Patterns
|
|
102
|
+
|
|
103
|
+
- **Review-only, never operational.** No driving advice, no HOS
|
|
104
|
+
legal interpretation, no vehicle-maintenance procedure, no
|
|
105
|
+
hazmat-handling guidance. Those need certified humans.
|
|
106
|
+
- **No generic prose.** "Consider mobile usability" fails the
|
|
107
|
+
Anti-Generic Quality Bar — every observation cites HOS, POD,
|
|
108
|
+
dock-dwell, dead-zone, or hands-busy.
|
|
109
|
+
- **No in-motion typing on the critical path.** A flow needing
|
|
110
|
+
the driver to type while driving is rejected outright.
|
|
111
|
+
- **No partial POD acceptance.** Missing any element of the
|
|
112
|
+
four-tuple = unbilled; the flow must hold the action open
|
|
113
|
+
until all four are captured or explicitly waived by dispatch.
|
package/CHANGELOG.md
CHANGED
|
@@ -702,6 +702,74 @@ our recommendation order, not its support status.
|
|
|
702
702
|
> that forces a new era split (`# Era: 2.16.x`, etc.) — see
|
|
703
703
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
704
704
|
|
|
705
|
+
## [2.19.0](https://github.com/event4u-app/agent-config/compare/2.18.0...2.19.0) (2026-05-16)
|
|
706
|
+
|
|
707
|
+
### Features
|
|
708
|
+
|
|
709
|
+
* **user-types:** land three seed user-types (galabau, metalworking, truck) ([361745e](https://github.com/event4u-app/agent-config/commit/361745ec88d32c7f6faa8f50ac4d350f95f6b6d1))
|
|
710
|
+
* **refine-ticket:** add --user-type lens, orthogonal to --personas ([7d70138](https://github.com/event4u-app/agent-config/commit/7d7013840d92d53ead0b8dba15bf6613398dcd5b))
|
|
711
|
+
* **linter:** add user-type artifact-type support ([bce874c](https://github.com/event4u-app/agent-config/commit/bce874cdb7e925585b74b478b0f4f0e4a7f40380))
|
|
712
|
+
* **user-types:** wire compile pipeline + author scaffolding ([8637dae](https://github.com/event4u-app/agent-config/commit/8637dae4463796726b0d7e737d37169334a0283b))
|
|
713
|
+
* **user-types:** lock schema + ADR for runtime user-type axis ([0ce1549](https://github.com/event4u-app/agent-config/commit/0ce1549a1e5037521cb06e9d1c467fa4ebf87d06))
|
|
714
|
+
* **eval-findings:** add schema template for step-13 closure evidence ([2b2daa4](https://github.com/event4u-app/agent-config/commit/2b2daa46fbf348f5a2901b185c91901de06a1025))
|
|
715
|
+
* **recruits:** add intake template for step-13 P1 recruit walkthroughs ([a569071](https://github.com/event4u-app/agent-config/commit/a569071853d665ca57813fc4c4676bba38716fac))
|
|
716
|
+
|
|
717
|
+
### Bug Fixes
|
|
718
|
+
|
|
719
|
+
* **adr:** drop transient roadmap links from user-types axis ADR ([e8d30fe](https://github.com/event4u-app/agent-config/commit/e8d30fe80c2d0b87406571b2c3dbbdd031312998))
|
|
720
|
+
* **contracts:** clamp user-type beta-review markers to 90-day window ([25af8cc](https://github.com/event4u-app/agent-config/commit/25af8ccd650d6ea304f5060ebb55c2d034d746a2))
|
|
721
|
+
* **refine-ticket:** sync compressed SKILL.md with --user-type persona-voice bullet ([14b9dcd](https://github.com/event4u-app/agent-config/commit/14b9dcdab69f063e1dcfc8d9070892b4d56305b1))
|
|
722
|
+
* **refs:** inline AI Council Phase 4 convergence summary ([0e6a578](https://github.com/event4u-app/agent-config/commit/0e6a5780773fbabba6f98a01bd4b25726c996903))
|
|
723
|
+
* **adr:** drop transient roadmap links from MCP runtime ADR ([8f2691e](https://github.com/event4u-app/agent-config/commit/8f2691e90130a9333bd9e01d0863ecb0c9f7ec97))
|
|
724
|
+
* **template:** bump agent_config_version pin to 2.18.0 ([dd7441d](https://github.com/event4u-app/agent-config/commit/dd7441d2fc0fd785a70272b6520eb0eb29a61a66))
|
|
725
|
+
|
|
726
|
+
### Documentation
|
|
727
|
+
|
|
728
|
+
* **user-types:** cross-link personas↔user-types and surface metalworking-shop example ([ac0b0ce](https://github.com/event4u-app/agent-config/commit/ac0b0ce2e356654352d3c4caf1528b3d5772047c))
|
|
729
|
+
* **step-13:** link new recruit + eval-finding templates from prerequisites ([57b729a](https://github.com/event4u-app/agent-config/commit/57b729a236bf1b442df140fb2efbdecd9e73ffd9))
|
|
730
|
+
* **adr:** record MCP server runtime as Anthropic Python SDK ([5f5d689](https://github.com/event4u-app/agent-config/commit/5f5d6895d4369b313e1a5058eca21807e5566cfd))
|
|
731
|
+
|
|
732
|
+
### Tests
|
|
733
|
+
|
|
734
|
+
* **user-types:** add coverage audit script + tests ([ca403bb](https://github.com/event4u-app/agent-config/commit/ca403bb714fd505f539715fe25b7948714d0ee66))
|
|
735
|
+
* **user-types:** lock schema, lint, and composition contracts ([cfeb48a](https://github.com/event4u-app/agent-config/commit/cfeb48a9d04956ff9d6744383b44bcabeaa57702))
|
|
736
|
+
|
|
737
|
+
### Chores
|
|
738
|
+
|
|
739
|
+
* **roadmap:** close step-6 user-types axis and refresh progress dashboard ([2f50a96](https://github.com/event4u-app/agent-config/commit/2f50a96eeec1ea1bf832ed560553d4e940a94812))
|
|
740
|
+
* **roadmap:** close step-14 phases 1+2 against shipped MCP server ([2dcf04b](https://github.com/event4u-app/agent-config/commit/2dcf04bdf5f71bd546b7ec9cf27bbbb7fc6d0ec4))
|
|
741
|
+
|
|
742
|
+
Tests: 4493 (+17 since 2.18.0)
|
|
743
|
+
|
|
744
|
+
## [2.18.0](https://github.com/event4u-app/agent-config/compare/2.17.0...2.18.0) (2026-05-16)
|
|
745
|
+
|
|
746
|
+
### Features
|
|
747
|
+
|
|
748
|
+
* **lint:** user-type axis frontmatter audit + task wiring ([322bf1d](https://github.com/event4u-app/agent-config/commit/322bf1dc805550cb8c234808bde4235aaf0ba39e))
|
|
749
|
+
* **mcp:** filter skill prompts by personal.user_type ([0b09911](https://github.com/event4u-app/agent-config/commit/0b09911ea6ed2870b12b52ee67a922c3df1f919c))
|
|
750
|
+
* **install:** wire --user-type flag across install entrypoints ([6589c6b](https://github.com/event4u-app/agent-config/commit/6589c6bce4682d521c12727adc4903e7333a421d))
|
|
751
|
+
* **install:** add user_type schema + template placeholder + ADR ([3ede84d](https://github.com/event4u-app/agent-config/commit/3ede84d79ce0d3612ae6d2a862ae239cb01f8762))
|
|
752
|
+
|
|
753
|
+
### Documentation
|
|
754
|
+
|
|
755
|
+
* **roadmaps:** close step-9 user-types axis + flip parent step-12 ([f1926dc](https://github.com/event4u-app/agent-config/commit/f1926dc6905128bfcb909dc03e47a37c7754e4e3))
|
|
756
|
+
|
|
757
|
+
### Tests
|
|
758
|
+
|
|
759
|
+
* **install:** cover --user-type + sync user_type preservation ([349478f](https://github.com/event4u-app/agent-config/commit/349478fccc608a2a9818585f7c2a43368ee076c0))
|
|
760
|
+
|
|
761
|
+
### Chores
|
|
762
|
+
|
|
763
|
+
* **docs:** drop broken step-12 link from getting-started-by-role ([351505a](https://github.com/event4u-app/agent-config/commit/351505a8fbc6626db5dd26cea494d2a4dbaead89))
|
|
764
|
+
* **contracts:** inline council verdict + pragma roadmap source-trails ([4442030](https://github.com/event4u-app/agent-config/commit/4442030543b02511ced3643d9c6062e0722448d9))
|
|
765
|
+
* **contracts:** drop transient roadmap refs from stable artifacts ([ecad21e](https://github.com/event4u-app/agent-config/commit/ecad21e16b7269257ba95d104b2dce06a9f140a5))
|
|
766
|
+
* **contracts:** align keep-beta-until with 90-day window cap ([5c87588](https://github.com/event4u-app/agent-config/commit/5c8758854d19f5790b21bba41c4631e8460caa5e))
|
|
767
|
+
* **roadmaps:** retag step-13/14 complexity to lightweight ([e87cd35](https://github.com/event4u-app/agent-config/commit/e87cd35483cb16eb39574a10318c2f9cb720e9a7))
|
|
768
|
+
* **template:** bump agent_config_version pin to 2.17.0 ([f6bb24e](https://github.com/event4u-app/agent-config/commit/f6bb24e1267623bd49dffd1deb0c9ae071ea4906))
|
|
769
|
+
* **index:** regenerate index after upstream privacy-review desc edit ([fd7fe24](https://github.com/event4u-app/agent-config/commit/fd7fe248b2297021912ec41aff5dd5b1596c9989))
|
|
770
|
+
|
|
771
|
+
Tests: 4476 (+17 since 2.17.0)
|
|
772
|
+
|
|
705
773
|
## [2.17.0](https://github.com/event4u-app/agent-config/compare/2.16.0...2.17.0) (2026-05-15)
|
|
706
774
|
|
|
707
775
|
### Features
|