@ai-outfitter/outfitter 1.0.3 → 1.1.1

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.
Files changed (59) hide show
  1. package/.outfitter/skills/outfitter/SKILL.md +1 -1
  2. package/README.md +1 -1
  3. package/code/enterprise/cli/privateCatalogGate.cjs +3 -3
  4. package/dist/cli/OutfitterCli.js +2 -0
  5. package/dist/cli/OutfitterCli.js.map +1 -1
  6. package/dist/cli/commands/DumpCommand.js +8 -3
  7. package/dist/cli/commands/DumpCommand.js.map +1 -1
  8. package/dist/cli/commands/ListCommand.js +4 -3
  9. package/dist/cli/commands/ListCommand.js.map +1 -1
  10. package/dist/cli/commands/PiRuntimeLaunch.js +3 -16
  11. package/dist/cli/commands/PiRuntimeLaunch.js.map +1 -1
  12. package/dist/cli/commands/RunAgentCommand.js +1 -0
  13. package/dist/cli/commands/RunAgentCommand.js.map +1 -1
  14. package/dist/cli/commands/SetupCommand.d.ts +1 -1
  15. package/dist/cli/commands/SetupCommand.js +6 -13
  16. package/dist/cli/commands/SetupCommand.js.map +1 -1
  17. package/dist/cli/commands/SyncCommand.d.ts +31 -0
  18. package/dist/cli/commands/SyncCommand.js +162 -0
  19. package/dist/cli/commands/SyncCommand.js.map +1 -0
  20. package/dist/cli/commands/ValidateCommand.js +4 -2
  21. package/dist/cli/commands/ValidateCommand.js.map +1 -1
  22. package/dist/paths/RepositoryAssets.d.ts +4 -0
  23. package/dist/paths/RepositoryAssets.js +26 -0
  24. package/dist/paths/RepositoryAssets.js.map +1 -0
  25. package/dist/resolver/Layer.d.ts +17 -1
  26. package/dist/resolver/Layer.js +23 -15
  27. package/dist/resolver/Layer.js.map +1 -1
  28. package/dist/resolver/ResolverContext.d.ts +2 -0
  29. package/dist/resolver/ResolverContext.js +7 -2
  30. package/dist/resolver/ResolverContext.js.map +1 -1
  31. package/dist/settings/SettingsLoader.d.ts +12 -3
  32. package/dist/settings/SettingsLoader.js +25 -11
  33. package/dist/settings/SettingsLoader.js.map +1 -1
  34. package/dist/setup/DefaultCatalog.d.ts +3 -2
  35. package/dist/setup/DefaultCatalog.js +26 -51
  36. package/dist/setup/DefaultCatalog.js.map +1 -1
  37. package/dist/sources/GitRepository.d.ts +28 -0
  38. package/dist/sources/GitRepository.js +139 -0
  39. package/dist/sources/GitRepository.js.map +1 -0
  40. package/dist/sources/PrivateCatalogGate.d.ts +27 -0
  41. package/dist/sources/PrivateCatalogGate.js +23 -0
  42. package/dist/sources/PrivateCatalogGate.js.map +1 -0
  43. package/dist/sources/SourceCache.d.ts +11 -1
  44. package/dist/sources/SourceCache.js +11 -2
  45. package/dist/sources/SourceCache.js.map +1 -1
  46. package/docs/documentation/README.md +2 -2
  47. package/docs/documentation/catalogs.md +10 -2
  48. package/docs/documentation/cli.md +12 -4
  49. package/docs/documentation/concepts.md +1 -1
  50. package/docs/documentation/conventions.md +10 -0
  51. package/docs/documentation/getting-started.md +1 -1
  52. package/docs/documentation/personas.md +28 -27
  53. package/docs/documentation/profiles.md +1 -1
  54. package/docs/documentation/settings.md +4 -2
  55. package/docs/documentation/skills.md +2 -2
  56. package/docs/documentation/usecases/engineering.md +1 -1
  57. package/docs/documentation/usecases/organization-profile-catalog.md +1 -1
  58. package/docs/documentation/usecases/persona-reviews.md +90 -139
  59. package/package.json +1 -1
@@ -1,167 +1,118 @@
1
- # Persona Reviews
1
+ # Persona reviews
2
2
 
3
- A persona review catalog gathers structured feedback on a product, docs, onboarding flow, or UX from the points of view of the people who might use it — before asking real prospects to spend time. It uses the [persona convention](../personas.md): **one base review agent** plus a **directory of persona description documents**, run once per document.
3
+ A persona review gathers structured feedback on a product, docs, onboarding flow, or UX from the point of view of the people who might use it — before asking real prospects to spend time. It uses the [persona convention](../personas.md): **one shared review agent** plus **one committed Markdown file per persona**. The same file runs under Outfitter, and pastes unchanged into any web agent.
4
4
 
5
- There is no `personas:` map and no agent per customer type. The review rules live in a single agent; each persona is a cheap markdown file you feed it as input.
5
+ ## One persona, one file
6
6
 
7
- ```text
8
- customer-review/ # standalone .agents repo; root is the payload
9
- agents/
10
- reviewer/agent.md # the base review agent
11
- settings.yml
12
- docs/user-personas/
13
- roles/ # reusable job archetypes (shared segment priorities)
14
- staff-engineer.md
15
- founder-operator.md
16
- platform-lead.md
17
- individuals/ # specific named people, each naming one or more roles
18
- marcus-bell.md # roles: [staff-engineer]
19
- dana-okafor.md # roles: [founder-operator]
20
- priya-nair.md # roles: [platform-lead]
21
- ```
7
+ The whole persona is one portable, self-contained Markdown document — a generic role archetype, H1 first, no frontmatter, first-person prose. Abridged from the canonical [`platform-lead.md`](https://github.com/ai-outfitter/community-profiles/blob/main/skills/persona-authoring/references/personas/platform-lead.md) reference:
22
8
 
23
- Personas come in two kinds of file, and a review **mixes and matches** them: a **role** carries the priorities everyone in a customer segment shares, and an **individual** is one named person who inherits one or more roles and adds their own demographics and voice. Keep roles reusable and individuals concrete, and you can cover a lot of viewpoints from a small set of files.
9
+ ```markdown
10
+ # Platform Lead
24
11
 
25
- ## Settings
12
+ I'm the platform lead responsible for a consistent, reproducible agent setup
13
+ across a mid-sized engineering organization.
26
14
 
27
- Settings only names the default agent and where resources resolve from — no persona list:
15
+ ## How I decide
28
16
 
29
- ```yaml
30
- # settings.yml
31
- default_agent: reviewer
17
+ I look for clear precedence, pinned sources, documented secret boundaries,
18
+ least-privilege access, and tests showing that credentials stay isolated
19
+ between layers. I check the escape hatch first.
32
20
  ```
33
21
 
34
- ## The base review agent
35
-
36
- One agent holds the review method and the output shape. It does not name any customer type; it reads the persona files it is told to adopt, in order.
37
-
38
- ```
39
- <!-- agents/reviewer/agent.md -->
40
- ---
41
- name: reviewer
42
- description: Reviews an artifact from the point of view of an assigned customer persona.
43
- ---
44
-
45
- Adopt the persona files named in your instructions, in order: a role file
46
- establishes the segment's priorities, and an individual file layers that
47
- person's demographics and voice on top (later files refine earlier ones). If
48
- an individual names roles in its frontmatter, treat those as its baseline.
49
-
50
- Read or experience the provided artifact from that persona's point of view:
51
- docs, screenshots, website, prototype, product flow, or onboarding path.
52
- Distinguish evidence from assumptions, cite the exact page or UI moment that
53
- shaped your reaction, and do not invent real customer research.
54
-
55
- Return feedback as: persona, artifact reviewed, first impression, top blocker,
56
- strongest value signal, confusing language, suggested change, and confidence.
57
- If you need more context, ask for the smallest missing artifact.
22
+ The review method lives in the shared [`persona-reviewer`](https://github.com/ai-outfitter/community-profiles/blob/main/agents/persona-reviewer/agent.md) agent; each persona is a Markdown file you append to it.
23
+
24
+ ## Adopt persona reviews across an engineering organization
25
+
26
+ A platform engineer installs Outfitter and uses the `platform` profile to
27
+ configure a pinned [organization catalog](./organization-profile-catalog.md).
28
+ The catalog reuses the default `engineer` profile, defines the organization's
29
+ `marketing` profile, and makes the community persona-review components
30
+ available to both. After setup and sync, engineers review products from the
31
+ `engineer` profile while marketers review messaging from the `marketing`
32
+ profile. Both profile loadouts select `persona-review`. When either role is
33
+ asked to run a review, the skill launches the isolated shared reviewer with the
34
+ selected customer persona and saves the report:
35
+
36
+ ```mermaid
37
+ flowchart LR
38
+ subgraph platformTeam["Platform engineer platform profile"]
39
+ install["Install Outfitter"] --> platform["outfitter run platform"]
40
+ platform --> catalog["Configure pinned org catalog"]
41
+ end
42
+
43
+ subgraph distribution["Organization distribution"]
44
+ catalog --> defaults["default-profiles<br/>engineer skills: persona-review"]
45
+ catalog --> marketing["Organization catalog<br/>marketing skills: persona-review"]
46
+ defaults --> community["community-profiles<br/>persona-review skill<br/>persona-reviewer agent"]
47
+ end
48
+
49
+ subgraph roleTeams["Engineering and marketing teams"]
50
+ setup["outfitter setup and sync"] --> engineer["outfitter run engineer"]
51
+ setup --> marketer["outfitter run marketing"]
52
+ engineer -->|"Product review"| skill["Use persona-review skill"]
53
+ marketer -->|"Messaging review"| skill
54
+ persona["Customer persona<br/>docs/personas/customer.md"] --> reviewer["Isolated persona-reviewer"]
55
+ artifact["Review target"] --> reviewer
56
+ skill --> reviewer
57
+ reviewer --> report["Durable customer-review report"]
58
+ end
59
+
60
+ catalog --> setup
61
+ community --> setup
62
+ marketing --> setup
58
63
  ```
59
64
 
60
- ## Roles: reusable job archetypes
65
+ The `platform`, `engineer`, and `marketing` profiles are executable roles. A
66
+ customer persona supplies temporary identity context within the isolated
67
+ reviewer process.
61
68
 
62
- A role captures what everyone in a customer segment shares — the job, its goals, anxieties, buying triggers, and what its feedback focuses on — with no personal detail. Roles are reused across many individuals.
69
+ ## Author it
63
70
 
64
- ```
65
- <!-- docs/user-personas/roles/staff-engineer.md -->
66
- ---
67
- kind: role
68
- title: Staff Engineer
69
- segment: large-eng-org
70
- goals: [reduce cross-team friction, raise technical quality, adopt tools that survive scrutiny]
71
- anxieties: [tools that demo well but fail on a real codebase, unproven claims]
72
- buying_triggers: [credible examples, verifiable outcomes, a clean migration path]
73
- feedback_focus: [depth, verification paths, missing examples, evidence behind claims]
74
- ---
75
-
76
- Responsible for large codebases, architecture decisions, reviews, and
77
- cross-team technical quality. Cares whether the docs explain how the product
78
- improves real engineering work. Flags missing examples, weak verification
79
- paths, and claims that need evidence.
80
- ```
71
+ Start from the community catalog's [`template.persona.md`](https://github.com/ai-outfitter/community-profiles/blob/main/skills/persona-authoring/assets/template.persona.md) by hand, or let any agent that selects the [`persona-authoring`](https://github.com/ai-outfitter/community-profiles/tree/main/skills/persona-authoring) skill interview you into the file. Commit the result to normal project documentation:
81
72
 
82
- ```
83
- <!-- docs/user-personas/roles/founder-operator.md -->
84
- ---
85
- kind: role
86
- title: Founder-operator
87
- segment: seed-stage-startup
88
- goals: [ship weekly, keep the team small, reach the next milestone before the runway ends]
89
- anxieties: [tool sprawl, hidden pricing, time lost to setup]
90
- buying_triggers: [obvious value in the first hour, no credit card to try]
91
- feedback_focus: [time-to-first-value, jargon, trust boundaries, pricing clarity]
92
- ---
93
-
94
- A hands-on founder who writes product specs, edits docs, ships small features,
95
- and manages a thin team. Cares whether the first hour feels obviously valuable.
73
+ ```text
74
+ docs/personas/
75
+ platform-lead.md
76
+ founder-operator.md
96
77
  ```
97
78
 
98
- ## Individuals: named people who inherit roles
79
+ Prefer generic role archetypes over named individuals. Research and interviews are authoring inputs; commit only the self-contained file, and invent nothing the research does not support.
99
80
 
100
- An individual is one concrete person — with the demographics a [Lean Canvas](https://leanstack.com/lean-canvas) customer segment gets — who names one or more roles to inherit and then adds their own attributes and voice. The named person **mixes and matches** roles: usually one, but a founder who also runs the platform can list both.
81
+ ## Run it under Outfitter
101
82
 
102
- ```
103
- <!-- docs/user-personas/individuals/marcus-bell.md -->
104
- ---
105
- kind: individual
106
- name: Marcus Bell
107
- roles: [staff-engineer]
108
- born: 1985-11-02
109
- location: Seattle, WA
110
- household_income: 265000
111
- education: MS Computer Engineering
112
- employer: ~400-engineer fintech
113
- hobbies: [rock climbing, sci-fi novels, restoring old synths]
114
- skills: [distributed systems, code review, architecture, mentoring]
115
- tone: dry, skeptical, cites sources
116
- ---
117
-
118
- Reads new tooling the way he reads a design doc: looking for the failure mode
119
- first. Warm once convinced, but will not take a benchmark on faith.
120
- ```
83
+ After `outfitter setup`, launch the shared reviewer directly with the persona appended and save its output:
121
84
 
122
- ```
123
- <!-- docs/user-personas/individuals/dana-okafor.md -->
124
- ---
125
- kind: individual
126
- name: Dana Okafor
127
- roles: [founder-operator, platform-lead] # mixes two roles
128
- born: 1989-03-14
129
- location: Austin, TX
130
- household_income: 180000
131
- education: BS Computer Science
132
- employer: 6-person seed-stage startup (also the de facto platform owner)
133
- hobbies: [trail running, home espresso, mechanical keyboards]
134
- skills: [product specs, TypeScript, fundraising, hiring]
135
- tone: fast, pragmatic, allergic to jargon
136
- ---
137
-
138
- Wears the founder and the platform hat at once, so she weighs first-hour value
139
- against fleet-wide safety in the same breath. Impatient with setup friction.
85
+ ```sh
86
+ mkdir -p docs/persona-reviews
87
+ outfitter run persona-reviewer -- \
88
+ --append-system-prompt docs/personas/platform-lead.md \
89
+ --print "Review the onboarding flow and write the report. @README.md" \
90
+ > docs/persona-reviews/platform-lead-onboarding.md
140
91
  ```
141
92
 
142
- Keep the role attribute set consistent so reviews stay comparable, and let individuals vary freely in demographics and tone. Add more roles (`platform-lead`, `engineering-manager`, `agency-consultant`) and more individuals the same way.
93
+ This is the portable interface: it works from the project containing the persona and does not assume a particular catalog checkout path. One shared agent adopts the file as its identity for that session only and writes a first-person, sourced report — evidence cited to the exact page or UI moment, assumptions labeled. The reviewer inherits the caller's configured model; reviews benefit from a strong reasoning model.
143
94
 
144
- ## Running the reviews
95
+ ### Optional orchestration with the skill
145
96
 
146
- Run the base agent once per persona, naming the role and individual files to adopt and the artifact under review:
97
+ Use the [`persona-review`](https://github.com/ai-outfitter/community-profiles/tree/main/skills/persona-review) skill when another agent should manage the review process. The skill owns synchronous or background execution and durable report capture. From a checkout of the community catalog, its repository-relative launcher is an optional convenience:
147
98
 
148
- ```bash
149
- outfitter run reviewer -- --print \
150
- "Adopt docs/user-personas/roles/staff-engineer.md refined by \
151
- docs/user-personas/individuals/marcus-bell.md. Read README.md, \
152
- docs/getting-started.md, and docs/pricing.md, then return the standard \
153
- review shape: where the product feels credible, where it feels \
154
- underspecified, and the one example that would most improve your confidence."
99
+ ```sh
100
+ bash skills/persona-review/scripts/persona-review.sh \
101
+ --persona docs/personas/platform-lead.md \
102
+ --report docs/persona-reviews/platform-lead-onboarding.md \
103
+ -- --print "Review the onboarding flow and write the report. @README.md"
155
104
  ```
156
105
 
157
- ```bash
158
- outfitter run reviewer -- --print \
159
- "Adopt docs/user-personas/individuals/dana-okafor.md and the roles it names. \
160
- Browse the local docs site and try the first-run setup flow. Report the \
161
- first confusing moment, the first moment that felt valuable, and whether \
162
- you would keep using it."
163
- ```
106
+ The reviewer runs directly as the selected agent. This journey does not require Pi's native subagent projection.
107
+
108
+ ## Take the same file to the web
109
+
110
+ Paste or upload `docs/personas/platform-lead.md` unchanged into a claude.ai project's knowledge or a ChatGPT project and say: "Treat this as stakeholder context. Review the attached landing page from this persona's point of view." The file was written to read standalone, so a tool that takes Markdown project context can use it unchanged.
111
+
112
+ ## Why this shape
164
113
 
165
- Model and thinking choices — cheaper models for high-volume routing reviews, deeper reasoning for platform-risk reviews live in the reviewer agent's loadout, or a machine-local override, rather than being duplicated per persona.
114
+ - **One file per persona**: adding a persona adds a document, not another agent.
115
+ - **Comparable reports**: one agent fixes the review method and output shape, so feedback from different persona files is directly comparable.
116
+ - **No Outfitter dependency**: Outfitter is one optional consumer of a file that does not depend on it.
166
117
 
167
- Because the base agent fixes the output shape, feedback from every persona document is directly comparable. The result is a reusable customer-persona review catalog that reads docs or experiences a UX from many viewpoints without pretending to replace real customer discovery.
118
+ See the [persona spec](../personas.md) for the format, and the community catalog's [persona boundary doc](https://github.com/ai-outfitter/community-profiles/blob/main/docs/persona-review.md) for the responsibility split between authoring, the shared reviewer, and project wrappers.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-outfitter/outfitter",
3
- "version": "1.0.3",
3
+ "version": "1.1.1",
4
4
  "description": "Profile-oriented wrapper for launching pi, Claude Code, and future agent CLIs with reproducible configuration.",
5
5
  "type": "module",
6
6
  "repository": {