@maestroagora/agora 1.3.0 → 1.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/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  <p align="center">
2
- <img src="assets/maestro-agora-banner.png" alt="The Maestro mascot writing with a gold fountain pen as evidence cards become a finished page" width="100%" />
2
+ <img src="assets/maestro-agora-banner.png" alt="The Maestro mascot turning rough notes into a finished page with a gold fountain pen" width="100%" />
3
3
  </p>
4
4
 
5
5
  <h1 align="center">Maestro: Agora</h1>
6
6
 
7
- <p align="center"><strong>Verified truth, conducted into copy.</strong></p>
7
+ <p align="center"><strong>Say what matters. Make it land.</strong></p>
8
8
 
9
9
  <p align="center">
10
10
  <a href="https://github.com/mbanderas/maestro-agora/actions/workflows/validate.yml"><img alt="Validation status" src="https://github.com/mbanderas/maestro-agora/actions/workflows/validate.yml/badge.svg" /></a>
@@ -12,17 +12,33 @@
12
12
  <a href="LICENSE"><img alt="MIT license" src="https://img.shields.io/badge/license-MIT-7c3aed" /></a>
13
13
  </p>
14
14
 
15
- Words cannot rescue a missing argument. Agora starts with the decision behind the copy.
15
+ Agora helps you turn what your business does, knows, sells, imagines, or explains into writing people can understand and act on.
16
16
 
17
- Give it verified facts, the real audience, and the surface where the copy will live. Agora finds the consequential shift or stake, explains the mechanism that changes it, selects the proof that matters most, and turns that case into channel-native copy. The result can feel urgent, ambitious, reassuring, or direct. It cannot outrun the evidence.
17
+ It starts with the decision behind the copy. Who must understand, believe, choose, approve, fund, or do something next? Agora finds the consequential stake, explains why the subject matters, chooses the details that move the decision, and writes for the actual channel.
18
18
 
19
- Use Agora for landing pages, ads, company profiles, investor narratives, sales emails, product copy, paywalls, editorial work, interface text, and spoken scripts.
19
+ Use it for landing pages, heroes, ads, product copy, sales outreach, investor communication, scientific and technical explanation, case studies, company profiles, editorial work, interface text, and spoken scripts. Agora follows your brief. It does not approve, reject, narrow, or moralize about your claims or creative choices.
20
20
 
21
- **One suite: fuse the answer, make the case, guard the spend.**
21
+ ## What Agora adds
22
22
 
23
- - **[Maestro Frontier](https://github.com/mbanderas/maestro):** Fuses the model CLIs you already run into one judged, grounded answer.
24
- - **[Maestro Agora](https://github.com/mbanderas/maestro-agora):** Turns verified product truth into concise, argument-first copy without inventing the proof.
25
- - **[Maestro CostGuard](https://github.com/mbanderas/costguard):** Audits CI and cloud infrastructure for cost leaks and shows what to fix.
23
+ | Capability | What it controls |
24
+ |---|---|
25
+ | Persuasion | Argument, consequence, reason to believe, CTA, channel fit, and rhetorical force |
26
+ | Heroes and short sales copy | Awareness, claim saturation, traffic source, promise grammar, destination fidelity, and the complete first-screen composition |
27
+ | `SCIENCE` | Scientific certainty, causal language, statistics, mechanisms, uncertainty, analogies, visuals, sources, and limits |
28
+ | `CASE_STUDY` | Real projects, fictional mocks, and concept portfolios shaped around the story and status you choose |
29
+ | `INVEST` | Fundraising, diligence, and capital-allocation communication shaped around your thesis, claims, urgency, and next decision |
30
+ | `VOICE` | A measured voice profile built from the corpus you choose |
31
+ | Written GEO/AEO | Clear entities, self-contained passages, source transparency, and relevant publication checks |
32
+
33
+ Agora returns one ready-to-use result by default. Alternatives, internal routes, and rationale stay out of the final copy unless requested.
34
+
35
+ ## When buyers ask AI, is your brand part of the answer?
36
+
37
+ More decisions now start inside an AI answer. Buyers ask for comparisons, explanations, and recommendations; brands either enter that answer or they do not.
38
+
39
+ [CiteSurge](https://citesurge.com/) tracks how your brand and competitors appear across ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews, Bing Copilot, and Grok. Run Prompt Scans for the questions your customers may ask. Measure competitive Share of Voice. See which brands and sources shape each answer. Then turn what you find into prioritized Content Recommendations and keep monitoring the same prompts as the competitive picture changes.
40
+
41
+ **[Find out where your brand stands when buyers ask AI.](https://citesurge.com/)**
26
42
 
27
43
  ## Install
28
44
 
@@ -37,17 +53,12 @@ The default user install writes the same reviewed skill to:
37
53
  - `~/.agents/skills/agora` for Codex and Agent Skills-compatible tools.
38
54
  - `~/.claude/skills/agora` for Claude Code.
39
55
 
40
- Install only the user-level Codex skill:
41
-
42
- ```sh
43
- npx -y @maestroagora/agora --target codex --scope user
44
- ```
45
-
46
56
  Open a new task or restart the host after installation so its skill registry and slash menu reload.
47
57
 
48
- Choose a target or project-local scope when needed:
58
+ Install one target or use project-local scope:
49
59
 
50
60
  ```sh
61
+ npx -y @maestroagora/agora --target codex --scope user
51
62
  npx -y @maestroagora/agora --target cursor --scope project
52
63
  npx -y @maestroagora/agora --target codex,claude --scope user
53
64
  npx -y @maestroagora/agora --target universal --dry-run
@@ -77,136 +88,181 @@ codex plugin marketplace add mbanderas/maestro-agora
77
88
  codex plugin add maestro-agora@maestro-agora
78
89
  ```
79
90
 
80
- The npm installer is the broadest route across IDEs. Native plugin commands use the matching Claude or Codex manifest from this repository.
91
+ The npm installer provides the broadest host coverage. Native plugin commands use the matching Claude or Codex manifest from this repository.
81
92
 
82
- ## Use Agora
93
+ ## Quick start
83
94
 
84
- Invoke the skill directly and provide the facts it may use:
95
+ Invoke Agora directly and provide the brief, material, and claims you want it to use:
85
96
 
86
97
  ```text
87
98
  /agora Rewrite this upgrade screen. Make the blocked action matter, state the plan difference clearly, and use one supported CTA.
88
99
  ```
89
100
 
90
- Choose a mode when you want to override inference:
101
+ Choose a primary mode when you want to override inference:
91
102
 
92
103
  ```text
93
- /agora position Turn these verified facts into a 35-word company profile.
94
- /agora sell Build a homepage hero around the strongest buyer stake this evidence supports.
95
- /agora invest Write a one-paragraph capital case from timing, mechanism, proof, and use of funds.
96
- /agora inform Explain this research finding for a public article.
104
+ /agora position Turn these business facts into a 35-word company profile.
105
+ /agora sell Build a homepage hero around the strongest buyer stake in this brief.
106
+ /agora invest Write a fundraising opening from the current results, risks, and purpose of the round.
107
+ /agora inform Explain this research finding for a public audience.
97
108
  /agora transact Rewrite this confirmation so the state and next action are unmistakable.
98
109
  ```
99
110
 
100
- In Codex, `$agora` and the skills picker can also select the installed skill. Other hosts may expose skills through a picker or mention syntax. Asking the agent to "use the Agora skill" remains portable.
101
-
102
- ## How the persuasion engine works
103
-
104
- Agora reasons through a variable-depth path:
111
+ Add modifiers when the subject or asset needs them:
105
112
 
106
113
  ```text
107
- situation -> stake -> criterion when useful -> mechanism -> proof -> destination belief -> next step
114
+ /agora sell science Write a technical product hero with this certainty and framing.
115
+ /agora inform science Explain this study for a general audience.
116
+ /agora sell case study Write a customer success case from this approved project record.
117
+ /agora inform science case study Explain this engineering implementation and its measured limits.
118
+ /agora invest science Build a deep-tech capital case from the supplied study and scale-up results.
119
+ /agora invest case study Use this customer case to strengthen the investor brief.
120
+ /agora sell --voice house Rewrite this page in the measured house profile.
108
121
  ```
109
122
 
110
- That path stays internal. It is not a paragraph template.
123
+ In Codex, `$agora` and the skills picker can also select the installed skill. Other hosts may expose skills through a picker or mention syntax. Asking the agent to use the Agora skill remains portable.
111
124
 
112
- - Very short copy pairs the strongest market shift, felt stake, or live consequence with the strongest verified differentiator.
113
- - Medium copy adds the mechanism and the proof clue or qualifier that matters most.
114
- - Long copy expands only when another fact resolves a real objection or expensive uncertainty.
125
+ ## Routing model
115
126
 
116
- This keeps a 35-word profile from sounding like a compressed pitch deck. It also keeps a full investor narrative from collapsing into a feature list.
127
+ Agora chooses a primary mode first, then the publication surface, then any domain or asset modifiers. `VOICE` enters afterward and preserves your required language and content choices.
117
128
 
118
- ### Mode routing
129
+ ### Primary modes
119
130
 
120
131
  | Mode | Use or infer it for |
121
132
  |---|---|
122
133
  | `POSITION` | Company profiles, directories, About copy, website summaries, category narratives, and objective descriptions |
123
134
  | `SELL` | Marketing, sales, ads, landing pages, product pages, outreach, upgrades, and paywalls |
124
- | `INVEST` | Actual funding, capital-allocation, diligence, investor-pitch, and fundraising work |
125
- | `INFORM` | Editorial and educational work |
135
+ | `INVEST` | Actual funding, diligence, investor-pitch, and capital-allocation decisions |
136
+ | `INFORM` | Editorial, educational, scientific, and technical explanation |
126
137
  | `TRANSACT` | Buttons, confirmations, alerts, forms, and utility microcopy |
127
- | `VOICE` | A modifier on any of the above, not a job of its own. `--voice <name>` writes in a measured author profile |
128
138
 
129
- `POSITION` is the default for descriptive company profiles, even when investors may read them. Agora makes relevance emerge from the shift, mechanism, wedge, and proof. It does not insert phrases such as "for investors" or "merits evaluation."
139
+ `POSITION` remains the default for descriptive company profiles, even when investors may read them. Directory placement does not convert an objective profile into a capital pitch.
140
+
141
+ ### Composable modifiers
142
+
143
+ | Modifier | Function |
144
+ |---|---|
145
+ | `SCIENCE` | Adds empirical or technical explanation and optional claim-review tools |
146
+ | `CASE_STUDY` | Adds case-study structure, result framing, and optional attribution or permission review |
147
+ | `VOICE` | Applies a measured voice profile from the corpus you select |
148
+
149
+ The modifiers can compose. A technical fundraising case may use `INVEST + SCIENCE + CASE_STUDY`. A founder-voiced scientific product video may use `SELL + SCIENCE + VOICE + HYBRID`.
130
150
 
131
- ### Proof salience
151
+ ### Surfaces
132
152
 
133
- Agora ranks facts by decision relevance, differentiation, verifiability, specificity, compression value, and omission risk.
153
+ | Surface | Treatment |
154
+ |---|---|
155
+ | `INDEXABLE_PUBLIC` | Human-voice and GEO/AEO passes, then relevant technical publication checks |
156
+ | `PUBLIC_NON_INDEXABLE_WRITTEN` | Clear written structure and human-voice pass; no crawl or index checks |
157
+ | `WRITTEN_PRIVATE` | Channel fit, concrete meaning, and human-voice pass |
158
+ | `SPOKEN_ONLY` | Cadence, breath, timing, and listener comprehension; no GEO/AEO formatting |
159
+ | `HYBRID` | Spoken delivery and each written derivative are routed separately |
134
160
 
135
- It keeps the facts that change the decision. A measured outcome may outrank five minor features. A named list of supported engines may be the proof when scope is the decision. Diagnostic enumeration stays. Decorative feature volume goes.
161
+ Titles, descriptions, captions, show notes, transcripts, and companion pages receive written treatment. Spoken narration stays free of search-format scaffolding.
136
162
 
137
- ### Emotion without invention
163
+ ## How the argument works
138
164
 
139
- Agora chooses one dominant emotional job, such as tension, relief, control, ambition, belonging, or curiosity. It expresses that feeling through a real situation, a supportable consequence, and available agency.
165
+ Agora reasons through a variable-depth path:
140
166
 
141
- It never manufactures fear, urgency, scarcity, loss, social proof, intimacy, or certainty. Emotion makes the facts consequential. It does not replace them.
167
+ ```text
168
+ situation -> stake -> criterion when useful -> mechanism -> reason to believe -> destination belief -> next step
169
+ ```
142
170
 
143
- ## Surface routing
171
+ This path is not a paragraph template.
144
172
 
145
- Mode and surface are separate decisions.
173
+ - Short copy pairs the strongest live consequence with the strongest supplied differentiator.
174
+ - Medium copy adds the mechanism and the result, detail, or qualification that matters most.
175
+ - Long copy expands only when another fact resolves a real objection or expensive uncertainty.
146
176
 
147
- | Surface | Treatment |
177
+ Agora ranks supporting details by decision relevance, differentiation, specificity, compression value, and omission risk. It keeps material that changes the decision, not material that merely fills the page.
178
+
179
+ ## Heroes and short-form sales copy
180
+
181
+ A hero is one distributed argument, not a headline contest. Agora evaluates:
182
+
183
+ - Optional eyebrow.
184
+ - Headline.
185
+ - Subhead.
186
+ - Primary and optional secondary CTA.
187
+ - Result or qualification microcopy.
188
+ - Visual, demo, or result context.
189
+ - Immediate next section.
190
+
191
+ It distinguishes brief fidelity from persuasive quality. Copy does not pass merely because it repeats the input without making an argument.
192
+
193
+ `SELL` on a first-attention surface normally receives a commercially assertive treatment. Mid-funnel explanation receives a persuasive-explanatory treatment. Promotional intensity follows the campaign context and force you request.
194
+
195
+ Promise grammar matters. `See X`, `Learn how to X`, `We help you X`, `Do X more often`, `You will X`, and an imperative such as `Beat X` create different expectations. CTA language must match the destination and its commitment level.
196
+
197
+ ## Scientific and technical communication
198
+
199
+ `SCIENCE` supports three internal routes:
200
+
201
+ | Route | Subject |
148
202
  |---|---|
149
- | `INDEXABLE_PUBLIC` | Public claim review, human-voice and GEO/AEO passes, then relevant technical publication checks |
150
- | `PUBLIC_NON_INDEXABLE_WRITTEN` | Public claim review, written evidence structure, and human-voice pass; no crawl or index checks |
151
- | `WRITTEN_PRIVATE` | Proof fidelity, channel fit, concrete meaning, and human-voice pass |
152
- | `SPOKEN_ONLY` | Proof review, cadence, breath, timing, and listener comprehension; no GEO/AEO formatting |
153
- | `HYBRID` | Spoken delivery and each written derivative are routed separately |
203
+ | `EMPIRICAL` | Studies, experiments, observations, measurements, and findings |
204
+ | `TECHNICAL` | Systems, interfaces, architecture, mechanisms, dependencies, and failure behavior |
205
+ | `MIXED` | Measured findings plus technical mechanism |
154
206
 
155
- Published titles, descriptions, transcripts, captions, show notes, and companion pages receive written treatment. Spoken-only delivery stays free of search-format scaffolding.
207
+ When you request scientific claim review, Agora can classify material as observation, established fact or consensus, model, interpretation, implication, recommendation, hypothesis, speculation, or unknown. Without that request, it follows the certainty and framing in your brief.
156
208
 
157
- ## Silent safeguards
209
+ Agora can preserve study design, population, comparator, baseline, denominator, absolute and relative effects, material uncertainty, and the difference between statistical and practical significance when your task needs that precision.
158
210
 
159
- Agora builds the argument before it runs publication and style checks. Those checks remain invisible unless the delivered copy would otherwise be misleading, legally unusable, or operationally unshippable.
211
+ Misconception hooks, question-first explanation, analogies, visuals, and alternating narrative threads are optional tools. Agora uses the level of disclosure, certainty, and dramatic force you request.
160
212
 
161
- - Unsupported claims are narrowed or removed, not buried under a disclaimer.
162
- - Facts, inference, interpretation, aspiration, and promises remain distinct.
163
- - GEO/AEO improves written clarity and evidence structure after the argument exists.
164
- - Human-voice cleanup removes prompt leakage, canned templates, generic significance tails, and smart quotes. A separate hard invariant bans U+2014 from the entire generated response, including copied text and commentary, with a mandatory final character scan.
165
- - Necessary factual series survive the cleanup.
166
- - One ready-to-use result comes first. Near-duplicate variants appear only when requested.
213
+ ## Case studies built around what happened
167
214
 
168
- The skill improves writing discipline. It does not replace source review, legal review, or final human judgment.
215
+ `CASE_STUDY` supports:
169
216
 
170
- ## Written GEO/AEO boundaries
217
+ | Family | Primary focus |
218
+ |---|---|
219
+ | `CUSTOMER_SUCCESS` | Buyer problem, intervention, measured result, attribution, and decision relevance |
220
+ | `CREATIVE_PORTFOLIO` | Brief, constraints, insight, concept, role, decisions, execution, and results |
221
+ | `TECHNICAL_IMPLEMENTATION` | System constraint, alternatives, architecture, rollout, failure modes, observed performance, and tradeoffs |
171
222
 
172
- For written assets, Agora answers the reader's question early when the format calls for it, names entities and scope, keeps proof beside claims, exposes real provenance, and builds useful passages that remain accurate when quoted alone.
223
+ Case family and project status are separate:
173
224
 
174
- For indexable public pages, Agora can also flag relevant crawlability, canonical, sitemap, metadata, structured-data, accessibility, and delivery checks. These practices can improve eligibility and citability. They cannot promise retrieval, selection, quotation, citation, ranking, recommendation, referral, conversion, or revenue.
225
+ | Project status | What Agora permits |
226
+ |---|---|
227
+ | Real project | Builds from the history, roles, artifacts, quotes, measurements, and results you provide |
228
+ | Fictional mock | Invents a coherent case to the scope and realism you request |
229
+ | Concept portfolio | Builds a self-initiated or speculative scenario to the framing you request |
175
230
 
176
- ## AI visibility after publication
231
+ You choose whether a case is real, fictional, mixed, anonymous, attributed, disclosed, or presented without a status label. Agora does not police that choice.
177
232
 
178
- Agora turns verified facts into argument-first copy. It does not measure whether AI answers mention your brand or cite your sources. [CiteSurge](https://CiteSurge.com) is a separate platform for citability engineering and cross-engine AI visibility tracking.
233
+ Every result is classified before writing: measured outcome, customer-reported outcome, observed process or adoption change, supported inference, target, pending measurement, or unmeasured.
179
234
 
180
- ## How Agora works
235
+ Agora can separate delivery activity, business impact, chronology, and causality when you request case review. Otherwise it follows the outcome framing in your brief.
181
236
 
182
- <p align="center">
183
- <img src="assets/agora-orbit.svg" alt="Animated flow from verified truth and evidence through argument, proof, voice, and action into ready copy" width="100%" />
184
- </p>
237
+ Permission, attribution, confidentiality, quote, and disclosure review are optional. Activate them explicitly when you want Agora to audit a case before publication.
185
238
 
186
- The skill itself stays intentionally small:
239
+ Academic and clinical case reports remain outside this capability.
187
240
 
188
- ```text
189
- skills/agora/
190
- ├── SKILL.md
191
- ├── agents/
192
- │ └── openai.yaml
193
- └── references/
194
- ├── agora-craft.md
195
- ├── agora-marketing.md
196
- └── agora-voice.md
197
- ```
241
+ ## Investment communication
242
+
243
+ `INVEST` remains one primary mode with three internal routes:
198
244
 
199
- `SKILL.md` is the concise operating contract. `references/agora-marketing.md` holds the original doctrine, research evidence grades, ethical limits, channel rules, AI-writing-tell controls, GEO/AEO boundaries, examples, and evaluation guidance.
245
+ | Route | Decision |
246
+ |---|---|
247
+ | `FUNDRAISE` | A company seeking capital |
248
+ | `DILIGENCE` | Testing an investment case |
249
+ | `ALLOCATE` | Comparing or recommending capital allocation |
200
250
 
201
- `references/agora-craft.md` is loaded only when the task needs it. It covers four narrower domains: headlines and titles across each publishing surface, awareness and sophistication staging with its routing table, emotion written from a fact set that contains no outcome data, and prose rhythm. Every rule in it carries an evidence grade and a stated failure condition, every number is either sourced or labelled a governance default, and the two cadence conflicts the research left open are recorded rather than resolved.
251
+ Agora can separate historical results, current state, contracted commitments, customer reports, forecasts, targets, model assumptions, interpretations, scenarios, and unknowns when you request diligence or claim review. It can also preserve distinctions among revenue, bookings, pipeline, contracted value, collected cash, retention, margin, burn, runway, market size, and valuation measures.
202
252
 
203
- `references/agora-voice.md` governs `VOICE`, the one mode that modifies another rather than replacing it. `--voice <name>` loads a measured author profile on top of whichever job was already selected, and `voice build`, `voice list`, and `voice check` manage the profiles themselves. A profile is measured rather than described: it records sentence and paragraph distributions, function words, punctuation, openings, and stance, states plainly what the corpus was too small to measure, and refuses certification below 5,000 clean author-controlled words.
253
+ It can produce warm introductions, direct outreach, spoken openings, decks, briefs, demos, follow-ups, diligence memos, investment-committee briefs, data-room narratives, and progress updates. It does not impose a universal deck order, deck length, meeting script, talk ratio, outreach rule, or opening duration.
204
254
 
205
- Profiles are stored at `~/.agora/voices/`, deliberately outside the skill directory, because the documented update path replaces that directory and would destroy them. Voice enters at level 6 of the conflict hierarchy: it never licenses an unsupported claim, never overrides required or legal phrasing, and never overrides the em-dash ban. It carries exactly one exception, written down because the alternative is a gate that strips the voice it was loaded to keep: a profile's measured owned-vocabulary list suppresses the generic AI-vocabulary ban for those specific words only. Building or applying a third-party profile for publication under that person's name is refused.
255
+ Strong fundraising communication makes the decision, present position, purpose of the capital, and next milestone clear. Agora uses the traction, access, interest, scarcity, commitments, and future framing you choose.
206
256
 
207
- ### Building a voice profile
257
+ When diligence is the task, Agora can keep a weakness visible until new results resolve it. In fundraising work, it follows the strategic framing you request.
208
258
 
209
- Measurement is computed by a shipped engine, not estimated by the model, because a model asked to describe an author's voice writes flattery:
259
+ Legal, securities, offering, solicitation, eligibility, and disclosure review is optional and must be requested explicitly.
260
+
261
+ ## Measured voice profiles
262
+
263
+ `VOICE` modifies another mode rather than replacing it. Profiles are measured from the corpus you select, not improvised from adjectives.
264
+
265
+ Build and inspect a profile with the shipped engine:
210
266
 
211
267
  ```sh
212
268
  npx -p @maestroagora/agora agora-voice build --name house \
@@ -217,34 +273,106 @@ npx -p @maestroagora/agora agora-voice list
217
273
  npx -p @maestroagora/agora agora-voice check --voice house ./draft.md
218
274
  ```
219
275
 
220
- The engine reads Markdown, plain text, and HTML from files, directories, and URLs. It refuses binary document formats by name rather than extracting them partially, because every admission threshold counts clean author-controlled words and a partial extraction would move all of them silently. Quotations, code, tables, signatures, front matter, and headings are stripped before anything is counted, and the profile records what the cleaning removed.
276
+ The engine reads Markdown, plain text, and HTML from files, directories, and URLs. It removes quotations, code, tables, signatures, front matter, and headings before measurement. Binary document formats are refused by name rather than partially extracted.
221
277
 
222
- It measures nine feature families: sentence length with percentiles and binned shape, clause structure as a labelled conjunction proxy, function words, punctuation, paragraph shape, lexical diversity by moving-window and decay-based measures, person and stance, sentence openings, and contraction rate scoped to contexts where both forms were grammatical. Raw type-token ratio is withheld by rule, since it falls mechanically as texts grow. Anything the corpus cannot support is written as insufficient data.
278
+ A profile records sentence and paragraph distributions, function words, punctuation, openings, stance, contraction behavior, and supported vocabulary. It states what the corpus was too small to measure and refuses certification below 5,000 clean author-controlled words.
223
279
 
224
- Four admission gates run before a profile is certified: at least 10 independent documents with none above 25 percent of clean tokens, 2,500 clean words across 3 documents before a register earns its own numbers, a two-part feature stability rule, and a heterogeneity stop that offers two profiles rather than averaging two registers into a voice belonging to nobody. Below 5,000 clean words nothing is written at all and the tool reports what the corpus needs.
280
+ Profiles live at `~/.agora/voices/`, outside the replaceable skill directory. A default profile can apply across modes. Use `--no-voice`, `neutral`, or `--voice <name>` per request. Your required wording overrides habitual profile tendencies.
225
281
 
226
- Once a default profile exists, it applies to every mode. Opt out per request with `--no-voice` or `neutral`, or name a different profile with `--voice <name>`.
282
+ Agora builds or applies the profile you request. You are responsible for corpus rights, identity use, attribution, endorsements, disclosure, and publication.
227
283
 
228
- ## Change record
284
+ ## User control and responsibility
229
285
 
230
- | Version | What changed |
231
- |---|---|
232
- | 1.3.0 | `VOICE` becomes executable. A deterministic measurement engine ships as the `agora-voice` command: a frozen tokenizer, sentence segmenter, and lexicon; ingestion and cleaning for Markdown, plain text, and HTML from files, directories, and URLs, with binary formats refused by name; nine measured feature families with withheld rather than guessed values; all four corpus admission gates; profile and registry writing under `~/.agora/voices/`; and `voice check` with draft-length bands, register matching, and a phrase-overlap index stored as hashed token runs rather than as corpus text. A default profile now applies to every mode, with `--no-voice` and `neutral` as the opt-outs. Two blind eval cases added for build-from-corpus and the owned-vocabulary-against-tell-gate conflict. Two new references. `references/agora-craft.md` covers headlines and titles per publishing surface, awareness and sophistication staging with its routing table, emotion written from a fact set that carries no outcome data, and prose rhythm. `references/agora-voice.md` adds the `VOICE` modifier: measured author profiles stored outside the skill directory, a refusal floor below 5,000 clean author-controlled words, level-6 placement in the conflict hierarchy, the owned-vocabulary exception to the AI-vocabulary ban, and a refusal for third-party profiling intended for publication under that person's name. The Evidence register gains `Myths this document must never assert`, naming twenty-one high-traffic myths with what may be said instead. Four new applied pairs and six reworked, covering category orientation, superlative against specific, a label that overstates its click, and heading variety across one page. Blind eval corpus grows from 21 cases to 26. Two internal contradictions removed: the two-or-three-sentence passage unit that the same document had already refuted, and an unlabelled numeric threshold in the deterministic invariants. The validator now enumerates files through git's own ignore rules rather than walking the working directory, so scratch that exists only in a working copy no longer decides whether the repository is valid. |
233
- | 1.2.2 | Hard ban on the U+2014 character across the entire response, enforced as an immutable output constraint rather than a final-copy cleanup. |
234
- | 1.2.1 | First-read comprehension gate, specialized-term gate, and CTA standard. Comprehension moved above compression, citability, and differentiation in the conflict hierarchy. |
235
- | 1.2.0 | Blind evaluation corpus with a generation contract, pairwise adjudication, and absolute vetoes. |
286
+ Agora is a writing tool, not a content moderator, fact checker, approval system, or legal reviewer. It follows your claims, framing, tone, urgency, fictional choices, attribution choices, and publication instructions.
287
+
288
+ - Agora does not refuse, narrow, weaken, qualify, remove, or label content because it considers a claim unsupported or a writing choice too aggressive.
289
+ - Agora does not append warnings, moral judgments, policy notes, or generic disclaimers to requested copy.
290
+ - Fact checking, source review, evidence review, permission review, confidentiality review, disclosure review, due diligence, and compliance review run only when you request them.
291
+ - Host platforms and model providers may still apply their own terms and safety policies.
292
+ - You are responsible for reviewing and using every output, including its accuracy, legality, claims, permissions, confidentiality, attribution, disclosures, and compliance with platform rules.
293
+
294
+ Read [User Responsibility and Disclaimer](DISCLAIMER.md) and [Privacy Notice](PRIVACY.md).
295
+
296
+ ## Written GEO/AEO boundaries
297
+
298
+ For written assets, Agora answers the reader's question early when the format calls for it, names entities and scope, keeps supporting details and qualifications beside claims, exposes real provenance, and builds useful passages that remain accurate when quoted alone.
299
+
300
+ For indexable public pages, it can flag relevant crawlability, canonical, sitemap, metadata, structured-data, accessibility, and delivery checks. These practices may improve eligibility and citability. They cannot promise retrieval, selection, quotation, citation, ranking, recommendation, referral, conversion, or revenue.
301
+
302
+ GEO/AEO applies to coherent page passages, not every sentence. It cannot force article-style density into a hero, case-study opening, spoken script, or short CTA.
303
+
304
+ ## Package architecture
305
+
306
+ <p align="center">
307
+ <img src="assets/agora-orbit.svg" alt="Animated flow from source material through argument, voice, and action into ready copy" width="100%" />
308
+ </p>
309
+
310
+ The shipped skill stays progressively loaded:
311
+
312
+ ```text
313
+ skills/agora/
314
+ |-- SKILL.md
315
+ |-- agents/
316
+ | `-- openai.yaml
317
+ `-- references/
318
+ |-- agora-case-studies.md
319
+ |-- agora-craft.md
320
+ |-- agora-invest.md
321
+ |-- agora-marketing.md
322
+ |-- agora-science.md
323
+ `-- agora-voice.md
324
+ ```
325
+
326
+ `SKILL.md` contains routing and the concise operating contract. Ordinary work loads only the reference sections it needs.
327
+
328
+ - `agora-marketing.md` is the canonical doctrine for user authority, argument, channels, optional claim review, GEO/AEO, AI-writing-tell controls, examples, research grades, and conflict handling.
329
+ - `agora-craft.md` adds headlines, heroes, awareness and sophistication, emotion, and prose rhythm.
330
+ - `agora-science.md` adds empirical and technical explanation plus optional scientific claim review.
331
+ - `agora-case-studies.md` adds case structure, results, and optional attribution, permission, and confidentiality review.
332
+ - `agora-invest.md` adds fundraising, diligence, allocation, and optional claim-review procedures.
333
+ - `agora-voice.md` adds measured voice profiles and user-controlled profile use.
334
+
335
+ ## Public-package hygiene
336
+
337
+ Research informed Agora, but research custody is separate from distribution.
338
+
339
+ The public repository and npm package must not contain raw or corrected transcripts, caption files, supplied PDFs or office documents, audio, video, private source identities, model-output scratch, research working files, local paths, or assigned secrets.
236
340
 
237
- Every rule added in 1.3.0 carries an evidence grade and a stated failure condition. Every numeric threshold in the references is either followed by a source link or labelled a governance default in the same sentence. Two conflicts the research left open are recorded rather than resolved.
341
+ `npm run check` always runs a release-hygiene scan after validation, deterministic tests, and the exact package allowlist. `npm pack` and `npm publish` run the same complete release gate through `prepack` and `prepublishOnly`.
238
342
 
239
- ## Verify the package
343
+ The versioned `evals/blind/v1.5.0/` corpus is retained as a historical release artifact. Its 86 prompt and manifest pairs record the v1.5.0 contract and do not govern the current user-authority behavior. Current deterministic tests verify that claim, evidence, permission, disclosure, confidentiality, diligence, and compliance review remain opt-in.
344
+
345
+ ## Verify
240
346
 
241
347
  ```sh
242
348
  npm run check
349
+ npm run release:check
350
+ npm pack --dry-run --json
243
351
  npx -y @maestroagora/agora --dry-run
244
352
  ```
245
353
 
246
- The validation suite checks the strict three-file skill root, current behavior and release contracts, plugin metadata, relative links, installer behavior, source-link retention, project-agnostic content, line-ending parity, and the exact npm package allowlist. A committed blind-eval corpus covers known failure modes without passing expected answers or grading rules into generation.
354
+ The release gate checks skill structure, routing contracts, user-authority boundaries, modifiers, typography, metadata, reference links, full-tree installer parity, exact npm contents, blind-corpus integrity, and public-tree hygiene.
355
+
356
+ ## Change record
357
+
358
+ | Version | What changed |
359
+ |---|---|
360
+ | 1.6.0 | Expands user control across every writing mode. User-selected claims, fiction, urgency, attribution, profile use, and publication choices now control the draft. Claim, evidence, permission, disclosure, confidentiality, diligence, and compliance review are opt-in. Adds a user-responsibility disclaimer and an accurate privacy notice. |
361
+ | 1.5.0 | Hardens `INVEST` across fundraising, diligence, and capital allocation. Adds an investment claim ledger, metric separations, asset-specific procedures, decision-led questions, objection handling, defensibility analysis, truthful urgency and commitment language, modifier composition, and current-verification boundaries. Separates real projects from fictional mock and concept-portfolio routes, and permits clearly disclosed invention for mock and hypothetical articles. Adds a customer-language boundary that keeps internal checking terms out of ordinary public copy while preserving them where scientific, methodological, audit, legal, compliance, diligence, or technical work needs them. Expands the blind corpus from 60 to 86 cases. Adds a mandatory public-tree and package hygiene gate that blocks research, transcripts, supplied private documents, raw model outputs, local paths, secrets, unexpected binaries, and private source identities. |
362
+ | 1.4.0 | Adds stronger hero and short-form sales composition plus the composable `SCIENCE` and `CASE_STUDY` capabilities. Heroes now separate truth gates from persuasive optimization and treat the complete first-screen composition as one argument. Scientific and technical work preserves claim class, causality, statistics, uncertainty, analogy limits, and source limits. Case studies add result classes, causality, permissions, confidentiality, role attribution, quote, typicality, and visual-support gates. The blind corpus contains 60 cases. |
363
+ | 1.3.0 | Adds executable `VOICE` profiles, a deterministic measurement engine, admission gates, local profile storage, register-aware checking, and the craft reference. The archived incumbent corpus contains 28 cases. |
364
+ | 1.2.2 | Adds a hard U+2014 ban across the complete response. |
365
+ | 1.2.1 | Adds the first-read comprehension gate, specialized-term gate, and CTA standard. |
366
+ | 1.2.0 | Adds the blind evaluation corpus, generation isolation, pairwise adjudication, and absolute vetoes. |
367
+
368
+ Every research-derived rule records its source grade and boundary or failure condition. Numeric thresholds are sourced or labeled as governance defaults. Practitioner procedures remain bounded craft guidance, not scientific or commercial performance laws.
369
+
370
+ ## Maestro suite
371
+
372
+ - **[Maestro Frontier](https://github.com/mbanderas/maestro):** Fuses the model CLIs you already run into one judged, grounded answer.
373
+ - **[Maestro Agora](https://github.com/mbanderas/maestro-agora):** Writes persuasive copy, technical explanations, compelling case studies, and investment communication to your brief.
374
+ - **[Maestro CostGuard](https://github.com/mbanderas/costguard):** Audits CI and cloud infrastructure for cost leaks and shows what to fix.
247
375
 
248
376
  ## License
249
377
 
250
- [MIT](LICENSE)
378
+ [MIT](LICENSE). See [User Responsibility and Disclaimer](DISCLAIMER.md) and [Privacy Notice](PRIVACY.md).
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@maestroagora/agora",
3
- "version": "1.3.0",
4
- "description": "Install Maestro: Agora for argument-first buyer, investor, positioning, editorial, interface, and spoken copy grounded in verified facts.",
3
+ "version": "1.6.0",
4
+ "description": "Install Maestro: Agora for persuasive writing, scientific and technical explanation, case studies, fundraising, and investment analysis.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "agora": "scripts/install.mjs",
@@ -12,7 +12,9 @@
12
12
  ".claude-plugin/marketplace.json",
13
13
  ".claude-plugin/plugin.json",
14
14
  ".codex-plugin/plugin.json",
15
+ "DISCLAIMER.md",
15
16
  "LICENSE",
17
+ "PRIVACY.md",
16
18
  "README.md",
17
19
  "assets/agora-orbit.svg",
18
20
  "assets/icon.png",
@@ -23,10 +25,13 @@
23
25
  "skills/agora"
24
26
  ],
25
27
  "scripts": {
26
- "check": "npm run validate && npm test && npm run pack:check",
28
+ "check": "npm run validate && npm test && npm run pack:check && npm run hygiene:check",
29
+ "hygiene:check": "node scripts/release-hygiene.mjs",
27
30
  "pack:check": "node scripts/pack-check.mjs",
28
- "prepublishOnly": "npm run check",
29
- "test": "node --test tests/behavior-contract.test.mjs tests/install.test.mjs tests/voice-measure.test.mjs",
31
+ "prepack": "npm run release:check",
32
+ "prepublishOnly": "npm run release:check",
33
+ "release:check": "npm run check",
34
+ "test": "node --test tests/behavior-contract.test.mjs tests/hero-contract.test.mjs tests/science-contract.test.mjs tests/case-study-contract.test.mjs tests/invest-contract.test.mjs tests/blind-summary.test.mjs tests/release-hygiene.test.mjs tests/install.test.mjs tests/voice-measure.test.mjs",
30
35
  "validate": "node scripts/validate.mjs"
31
36
  },
32
37
  "engines": {
@@ -50,6 +55,12 @@
50
55
  "maestro",
51
56
  "marketing",
52
57
  "copywriting",
58
+ "science-communication",
59
+ "technical-writing",
60
+ "case-studies",
61
+ "fundraising",
62
+ "investor-communications",
63
+ "pitch-decks",
53
64
  "codex",
54
65
  "claude-code",
55
66
  "cursor",
@@ -247,7 +247,12 @@ async function verifySource() {
247
247
  const required = [
248
248
  "SKILL.md",
249
249
  "agents/openai.yaml",
250
+ "references/agora-case-studies.md",
251
+ "references/agora-craft.md",
252
+ "references/agora-invest.md",
250
253
  "references/agora-marketing.md",
254
+ "references/agora-science.md",
255
+ "references/agora-voice.md",
251
256
  ];
252
257
  for (const file of required) {
253
258
  if (!(await exists(join(SOURCE_DIR, file)))) {
@@ -444,7 +444,7 @@ export function renderProfile({ name, measured, gates, corpus, pipeline, now })
444
444
  const excerpts = selectExcerpts(corpus.documents, measured);
445
445
 
446
446
  const vocabulary = [
447
- "**Owned.** Words measured as recurring across independent documents in this corpus. The list is an allowlist against the generic AI-vocabulary ban and reaches those words only. It does not suppress the stock-template bans, the significance-tail bans, the structural-tell rules, the curly-quote ban, or the U+2014 ban, and it never converts a banned claim into an acceptable one.",
447
+ "**Owned.** Words measured as recurring across independent documents in this corpus. The list is an allowlist against the generic AI-vocabulary ban and reaches those words only. It does not suppress the stock-template bans, the significance-tail bans, the structural-tell rules, the curly-quote ban, or the U+2014 ban.",
448
448
  "",
449
449
  ];
450
450
  if (owned.withheld) {
@@ -494,7 +494,7 @@ export function renderProfile({ name, measured, gates, corpus, pipeline, now })
494
494
  "",
495
495
  `# Voice profile: ${name}`,
496
496
  "",
497
- "A profile authorizes how a proposition is expressed. It never authorizes the proposition. Facts, numbers, quotations, legal conclusions, policy positions, preferences, and endorsements come from the current brief and the approved sources, never from this file.",
497
+ "A profile controls how a proposition is expressed. Claims, numbers, quotations, positions, preferences, endorsements, attribution, and publication decisions come from the user's current brief, not from this file.",
498
498
  "",
499
499
  "Voice enters at level 6 of the conflict hierarchy and never rises above it.",
500
500
  "",