@maestroagora/agora 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +6 -5
- package/DISCLAIMER.md +3 -1
- package/PRIVACY.md +12 -2
- package/README.md +46 -5
- package/package.json +8 -3
- package/scripts/install.mjs +3 -0
- package/skills/agora/SKILL.md +58 -18
- package/skills/agora/agents/openai.yaml +2 -2
- package/skills/agora/references/agora-case-studies.md +13 -5
- package/skills/agora/references/agora-conversion.md +202 -0
- package/skills/agora/references/agora-craft.md +7 -2
- package/skills/agora/references/agora-invest.md +8 -6
- package/skills/agora/references/agora-marketing.md +69 -3
- package/skills/agora/references/agora-publication.md +137 -0
- package/skills/agora/references/agora-science.md +9 -3
- package/skills/agora/references/agora-voice.md +2 -2
- package/skills/agora/scripts/publication-audit.mjs +1225 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "maestro-agora",
|
|
3
|
-
"description": "Self-hosted marketplace for Maestro: Agora, the argument-first
|
|
3
|
+
"description": "Self-hosted marketplace for Maestro: Agora, the argument-first writing and publication artifact review skill.",
|
|
4
4
|
"owner": {
|
|
5
5
|
"name": "Mark Laursen",
|
|
6
6
|
"url": "https://github.com/mbanderas"
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
{
|
|
10
10
|
"name": "maestro-agora",
|
|
11
11
|
"source": "./",
|
|
12
|
-
"description": "Write user-directed commercial, technical, case-study, investment, interface, and spoken arguments
|
|
12
|
+
"description": "Write user-directed commercial, technical, case-study, investment, interface, and spoken arguments, then inspect local publication artifacts when explicitly requested."
|
|
13
13
|
}
|
|
14
14
|
]
|
|
15
15
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "maestro-agora",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"displayName": "Maestro: Agora",
|
|
5
|
-
"description": "Use /agora for persuasive writing, technical explanation,
|
|
5
|
+
"description": "Use /agora for persuasive writing, technical explanation, case studies, investment analysis, spoken or written copy, and explicit publication artifact audits.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Mark Laursen",
|
|
8
8
|
"url": "https://github.com/mbanderas"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "maestro-agora",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Maestro: Agora writes clear persuasion, technical explanations,
|
|
3
|
+
"version": "1.8.0",
|
|
4
|
+
"description": "Maestro: Agora writes clear persuasion, technical explanations, case studies, and investment communication, then audits local publication artifacts when requested.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Mark Laursen",
|
|
7
7
|
"url": "https://github.com/mbanderas"
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"skills": "./skills/",
|
|
26
26
|
"interface": {
|
|
27
27
|
"displayName": "Maestro: Agora",
|
|
28
|
-
"shortDescription": "
|
|
29
|
-
"longDescription": "Install Maestro: Agora in Codex for a direct /agora skill that follows the user's claims, framing, creative choices, and intended action across commercial arguments, technical explanations, case studies, and investment communication.",
|
|
28
|
+
"shortDescription": "Writing and publication artifact review",
|
|
29
|
+
"longDescription": "Install Maestro: Agora in Codex for a direct /agora skill that follows the user's claims, framing, creative choices, and intended action across commercial arguments, technical explanations, case studies, and investment communication, with explicit read-only privacy and provenance audits for local publication artifacts.",
|
|
30
30
|
"developerName": "Mark Laursen",
|
|
31
31
|
"category": "Productivity",
|
|
32
32
|
"capabilities": [
|
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
"/agora sell Write the strongest hero from this brief and destination.",
|
|
41
41
|
"/agora science Explain this technical subject with the certainty and framing I specify.",
|
|
42
42
|
"/agora case study Turn this project material into the case study I describe.",
|
|
43
|
-
"/agora invest Build this fundraising asset from my thesis, claims, urgency, and plan."
|
|
43
|
+
"/agora invest Build this fundraising asset from my thesis, claims, urgency, and plan.",
|
|
44
|
+
"/agora publication audit Inspect this local file for hidden Unicode, metadata, and provenance."
|
|
44
45
|
]
|
|
45
46
|
}
|
|
46
47
|
}
|
package/DISCLAIMER.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# User Responsibility and Disclaimer
|
|
2
2
|
|
|
3
|
-
Last updated: August
|
|
3
|
+
Last updated: August 12, 2026
|
|
4
4
|
|
|
5
5
|
## Purpose
|
|
6
6
|
|
|
@@ -23,6 +23,8 @@ That responsibility includes:
|
|
|
23
23
|
|
|
24
24
|
Agora can perform claim, evidence, permission, confidentiality, disclosure, diligence, or compliance review when explicitly requested. Such review is automated assistance, not professional advice or a guarantee that content is accurate, lawful, complete, effective, or suitable for a particular purpose.
|
|
25
25
|
|
|
26
|
+
Agora can also inspect selected local publication artifacts for configured privacy, metadata, hidden-text, review-data, and provenance signals. That inspection is partial and format-dependent. It is not a watermark remover, AI detector, authorship determination, forensic examination, anonymization service, or guarantee that a file is clean, safe, private, authentic, human-written, or free of undisclosed provenance. `NOT_FOUND_BY_THIS_CHECK` applies only to the named check. `UNKNOWN` coverage remains unresolved.
|
|
27
|
+
|
|
26
28
|
## No monitoring or approval duty
|
|
27
29
|
|
|
28
30
|
The project maintainer does not review, approve, monitor, or control what users ask Agora to produce or how users use its output. Availability of a feature or generated result does not constitute approval, endorsement, verification, or legal clearance.
|
package/PRIVACY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Privacy Notice
|
|
2
2
|
|
|
3
|
-
Last updated: August
|
|
3
|
+
Last updated: August 12, 2026
|
|
4
4
|
|
|
5
5
|
## Scope
|
|
6
6
|
|
|
@@ -35,6 +35,16 @@ These files can contain sensitive or identifiable writing. Users control the cor
|
|
|
35
35
|
|
|
36
36
|
When a user supplies an HTTP or HTTPS URL as a corpus source, the voice tool fetches that URL from the user's computer. The remote website may receive ordinary request and network information under its own privacy policy. The fetched content and resulting profile are not sent to the Agora maintainer by the tool.
|
|
37
37
|
|
|
38
|
+
## Publication audit
|
|
39
|
+
|
|
40
|
+
The optional `agora-publication-audit` tool reads local files selected by the user. It computes file hashes and can inspect configured text controls, document properties, comments, notes, tracked changes, image metadata containers, and provenance signals. It does not send source files or audit reports to the Agora maintainer.
|
|
41
|
+
|
|
42
|
+
The tool does not change source files. It reads each source again after inspection and reports whether its SHA-256 hash stayed unchanged. A report is written to disk only when the user supplies `--output`; the tool refuses to overwrite an existing report.
|
|
43
|
+
|
|
44
|
+
Audit reports redact metadata values and absolute paths by default. `--show-values` and `--include-paths` can place sensitive or identifying information in terminal output, logs, copied reports, host prompts, or files selected by the user. Users control those options and the storage, sharing, retention, and deletion of reports.
|
|
45
|
+
|
|
46
|
+
ExifTool, when already installed, runs locally in read mode to add metadata coverage. C2PA verification runs only when the user supplies `--verify-c2pa`; Agora supplies a local settings file that disables remote-manifest fetching. ExifTool, c2patool, the operating system, terminal, host application, and any separately configured wrappers remain third-party software outside the Agora project's control.
|
|
47
|
+
|
|
38
48
|
## GitHub interactions
|
|
39
49
|
|
|
40
50
|
GitHub processes information when users visit the repository, download releases, open issues, create pull requests, or otherwise use GitHub. GitHub's [General Privacy Statement](https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement) applies to that processing.
|
|
@@ -45,7 +55,7 @@ The maintainer may receive and use information a person voluntarily submits thro
|
|
|
45
55
|
|
|
46
56
|
Agora does not maintain a project-operated server containing user prompts, drafts, outputs, or voice profiles.
|
|
47
57
|
|
|
48
|
-
Users can delete locally stored Agora files
|
|
58
|
+
Users can delete locally stored Agora files, voice profiles, and saved audit reports using their operating system. Data held by npm, GitHub, a host application, a model provider, a remote website, or another third party is governed by that third party's retention and deletion process.
|
|
49
59
|
|
|
50
60
|
## Changes and contact
|
|
51
61
|
|
package/README.md
CHANGED
|
@@ -122,6 +122,31 @@ Add modifiers when the subject or asset needs them:
|
|
|
122
122
|
|
|
123
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.
|
|
124
124
|
|
|
125
|
+
## Publication privacy and provenance
|
|
126
|
+
|
|
127
|
+
Agora writes copy. It does not create SVG, PNG, JPEG, PDF, DOCX, or PPTX files by itself. Other document, presentation, PDF, site, design, or image tools may place Agora copy into those artifacts.
|
|
128
|
+
|
|
129
|
+
When you explicitly request a publication audit, Agora can inspect the local artifact before it leaves your control:
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
/agora publication audit Inspect ./launch-deck.pptx before I share it.
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Run the packaged read-only inspector directly when you want a deterministic report:
|
|
136
|
+
|
|
137
|
+
```sh
|
|
138
|
+
npx -y -p @maestroagora/agora@latest agora-publication-audit ./launch-deck.pptx
|
|
139
|
+
npx -y -p @maestroagora/agora@latest agora-publication-audit ./public-assets --json --output audit.json
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The inspector covers configured hidden or control characters in text, selected HTML and SVG metadata, Office properties and review material, PDF metadata, PNG and JPEG metadata containers, and C2PA carrier hints. ExifTool adds broader read-only PDF and image metadata coverage when it is already installed. `c2patool` verification is opt-in through `--verify-c2pa`, with remote-manifest fetching disabled by supplied settings.
|
|
143
|
+
|
|
144
|
+
Source files are read only and compared by SHA-256 before and after inspection. Sensitive values and absolute paths are redacted by default. Missing or partial coverage is reported as `UNKNOWN`.
|
|
145
|
+
|
|
146
|
+
This is publication hygiene, not a watermark remover or authorship detector. A result cannot prove that content is AI-generated, human-written, anonymous, clean, or safe. Claude's documented model-level text marking is not equivalent to unusual Unicode or ordinary file metadata.
|
|
147
|
+
|
|
148
|
+
Model-level text watermarks are statistical generation signals, not hidden characters or metadata fields. Without the matching provider verifier or detector configuration and enough eligible text, Agora reports that question as uninspected instead of guessing from style, Unicode, or generic detector scores.
|
|
149
|
+
|
|
125
150
|
## Routing model
|
|
126
151
|
|
|
127
152
|
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.
|
|
@@ -295,11 +320,11 @@ Read [User Responsibility and Disclaimer](DISCLAIMER.md) and [Privacy Notice](PR
|
|
|
295
320
|
|
|
296
321
|
## Written GEO/AEO boundaries
|
|
297
322
|
|
|
298
|
-
For
|
|
323
|
+
For indexable public 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 supplied provenance, and builds useful passages that remain accurate when quoted alone.
|
|
299
324
|
|
|
300
325
|
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
326
|
|
|
302
|
-
GEO/AEO applies to coherent
|
|
327
|
+
GEO/AEO applies to coherent passages on indexable public pages, not every sentence. It does not automatically apply to private, non-indexable, or spoken work, and it cannot force article-style density into a hero, case-study opening, or short CTA.
|
|
303
328
|
|
|
304
329
|
## Package architecture
|
|
305
330
|
|
|
@@ -314,11 +339,15 @@ skills/agora/
|
|
|
314
339
|
|-- SKILL.md
|
|
315
340
|
|-- agents/
|
|
316
341
|
| `-- openai.yaml
|
|
342
|
+
|-- scripts/
|
|
343
|
+
| `-- publication-audit.mjs
|
|
317
344
|
`-- references/
|
|
318
345
|
|-- agora-case-studies.md
|
|
346
|
+
|-- agora-conversion.md
|
|
319
347
|
|-- agora-craft.md
|
|
320
348
|
|-- agora-invest.md
|
|
321
349
|
|-- agora-marketing.md
|
|
350
|
+
|-- agora-publication.md
|
|
322
351
|
|-- agora-science.md
|
|
323
352
|
`-- agora-voice.md
|
|
324
353
|
```
|
|
@@ -329,8 +358,11 @@ skills/agora/
|
|
|
329
358
|
- `agora-craft.md` adds headlines, heroes, awareness and sophistication, emotion, and prose rhythm.
|
|
330
359
|
- `agora-science.md` adds empirical and technical explanation plus optional scientific claim review.
|
|
331
360
|
- `agora-case-studies.md` adds case structure, results, and optional attribution, permission, and confidentiality review.
|
|
361
|
+
- `agora-conversion.md` adds bounded conversion priors, outcome matching, self-serve and enterprise route design, pricing decision contracts, decision-adjacent proof, contradiction handling, and experiment interpretation for funnel surfaces.
|
|
332
362
|
- `agora-invest.md` adds fundraising, diligence, allocation, and optional claim-review procedures.
|
|
363
|
+
- `agora-publication.md` adds explicit read-only publication privacy and provenance review for local artifacts.
|
|
333
364
|
- `agora-voice.md` adds measured voice profiles and user-controlled profile use.
|
|
365
|
+
- `publication-audit.mjs` produces a deterministic, source-preserving inspection report without a cleaning operation.
|
|
334
366
|
|
|
335
367
|
## Public-package hygiene
|
|
336
368
|
|
|
@@ -338,25 +370,34 @@ Research informed Agora, but research custody is separate from distribution.
|
|
|
338
370
|
|
|
339
371
|
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.
|
|
340
372
|
|
|
341
|
-
`npm run check`
|
|
373
|
+
`npm run check` runs validation, deterministic tests, the exact package allowlist, and release hygiene. `npm run release:check` is the proportional mandatory release gate and runs those same checks. `npm pack` and `npm publish` invoke it through `prepack` and `prepublishOnly`.
|
|
374
|
+
|
|
375
|
+
Behavioral evaluation is optional research, not a pack or publish blocker. `npm run eval:release` preserves the version-specific v1.7 evidence audit and must be run from a matching v1.7 checkout. Existing evaluation artifacts remain frozen for reproducibility; new blind or confirmatory generations are not required for later releases.
|
|
376
|
+
|
|
377
|
+
The versioned directories under `evals/blind/` are public pairwise-release artifacts, not permanently secret holdouts. `v1.2.0`, `v1.4.0`, `v1.5.0`, and `v1.7.0` are frozen by exact tree hashes in `evals/releases/locks.json`; validation fails on additions, deletions, or edits.
|
|
378
|
+
|
|
379
|
+
`evals/prospective/conversion-context-v1.0.0/` remains the development source for conversion-context cases. Earlier fixture sets are preserved under `evals/regression/` for regression analysis and historical reproducibility. `evals/blind/v1.7.0/` contains 25 independently authored conversion scenarios with versioned judging and reduction tooling.
|
|
342
380
|
|
|
343
|
-
|
|
381
|
+
Deterministic tests verify instruction structure, routing contracts, static invariants, and evaluation-record shape. Versioned blind-evaluation tooling remains available for repeatable development analysis without turning model preference into a universal conversion claim.
|
|
344
382
|
|
|
345
383
|
## Verify
|
|
346
384
|
|
|
347
385
|
```sh
|
|
348
386
|
npm run check
|
|
349
387
|
npm run release:check
|
|
388
|
+
node scripts/eval-locks.mjs
|
|
350
389
|
npm pack --dry-run --json
|
|
351
390
|
npx -y @maestroagora/agora --dry-run
|
|
352
391
|
```
|
|
353
392
|
|
|
354
|
-
The release gate checks skill structure, routing contracts, user-authority boundaries, modifiers, typography, metadata, reference links, full-tree installer parity, exact npm contents,
|
|
393
|
+
The mandatory release gate checks skill structure, routing contracts, user-authority boundaries, modifiers, typography, metadata, reference links, full-tree installer parity, exact npm contents, frozen evaluation-tree locks, public-tree hygiene, and deterministic tests. It does not require model generation or blind adjudication.
|
|
355
394
|
|
|
356
395
|
## Change record
|
|
357
396
|
|
|
358
397
|
| Version | What changed |
|
|
359
398
|
|---|---|
|
|
399
|
+
| 1.8.0 | Adds opt-in publication privacy and provenance review plus a packaged read-only audit CLI. Reports configured hidden Unicode, document and image metadata, Office review material, and C2PA carrier or validation signals without changing source files. Redacts sensitive values and paths by default, preserves unknown coverage, and makes no watermark-removal or authorship claim. |
|
|
400
|
+
| 1.7.0 | Adds a progressively loaded conversion-context reference with bounded conversion priors, downstream outcome matching, self-serve and enterprise route design, pricing decision contracts, proof placement, and contradiction handling. Tightens closed-world fact preservation and limits written GEO/AEO requirements to indexable public work. |
|
|
360
401
|
| 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
402
|
| 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
403
|
| 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. |
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maestroagora/agora",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Install Maestro: Agora for persuasive writing,
|
|
3
|
+
"version": "1.8.0",
|
|
4
|
+
"description": "Install Maestro: Agora for persuasive writing, technical explanation, case studies, investment communication, and publication artifact review.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"agora": "scripts/install.mjs",
|
|
8
|
+
"agora-publication-audit": "skills/agora/scripts/publication-audit.mjs",
|
|
8
9
|
"agora-voice": "scripts/voice-measure.mjs"
|
|
9
10
|
},
|
|
10
11
|
"files": [
|
|
@@ -30,8 +31,9 @@
|
|
|
30
31
|
"pack:check": "node scripts/pack-check.mjs",
|
|
31
32
|
"prepack": "npm run release:check",
|
|
32
33
|
"prepublishOnly": "npm run release:check",
|
|
34
|
+
"eval:release": "node scripts/release-evidence-check.mjs",
|
|
33
35
|
"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",
|
|
36
|
+
"test": "node --test tests/behavior-contract.test.mjs tests/hero-contract.test.mjs tests/conversion-context-contract.test.mjs tests/science-contract.test.mjs tests/case-study-contract.test.mjs tests/invest-contract.test.mjs tests/publication-audit.test.mjs tests/blind-summary.test.mjs tests/blind-judge-prompt.test.mjs tests/blind-judge-materialize.test.mjs tests/blind-judgment-ingest.test.mjs tests/adjudication-reducer.test.mjs tests/eval-provenance-check.test.mjs tests/release-evidence-check.test.mjs tests/release-hygiene.test.mjs tests/install.test.mjs tests/voice-measure.test.mjs",
|
|
35
37
|
"validate": "node scripts/validate.mjs"
|
|
36
38
|
},
|
|
37
39
|
"engines": {
|
|
@@ -61,6 +63,9 @@
|
|
|
61
63
|
"fundraising",
|
|
62
64
|
"investor-communications",
|
|
63
65
|
"pitch-decks",
|
|
66
|
+
"publication-privacy",
|
|
67
|
+
"content-provenance",
|
|
68
|
+
"metadata-audit",
|
|
64
69
|
"codex",
|
|
65
70
|
"claude-code",
|
|
66
71
|
"cursor",
|
package/scripts/install.mjs
CHANGED
|
@@ -248,11 +248,14 @@ async function verifySource() {
|
|
|
248
248
|
"SKILL.md",
|
|
249
249
|
"agents/openai.yaml",
|
|
250
250
|
"references/agora-case-studies.md",
|
|
251
|
+
"references/agora-conversion.md",
|
|
251
252
|
"references/agora-craft.md",
|
|
252
253
|
"references/agora-invest.md",
|
|
253
254
|
"references/agora-marketing.md",
|
|
255
|
+
"references/agora-publication.md",
|
|
254
256
|
"references/agora-science.md",
|
|
255
257
|
"references/agora-voice.md",
|
|
258
|
+
"scripts/publication-audit.mjs",
|
|
256
259
|
];
|
|
257
260
|
for (const file of required) {
|
|
258
261
|
if (!(await exists(join(SOURCE_DIR, file)))) {
|
package/skills/agora/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: agora
|
|
3
|
-
description: Write, rewrite, shorten, critique, or plan
|
|
3
|
+
description: Write, rewrite, shorten, critique, or plan argument-first marketing, sales, investment, scientific, technical, editorial, case-study, interface, and spoken content. Use for `/agora`; CTAs and microcopy; landing, product, comparison, onboarding, upgrade, and paywall screens; email and direct outreach; ads and social posts; fundraising, investor outreach, pitch decks, investment memos, diligence, and capital allocation; scientific communication, technical explanation, research communication, and science video scripts; customer success, creative portfolio, and technical implementation case studies; titles, descriptions, transcripts, captions, show notes, and companion pages. Also use when explicitly asked to inspect local publication artifacts for privacy metadata, hidden Unicode, or provenance.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Maestro: Agora
|
|
@@ -17,14 +17,24 @@ Do not repeat U+2014 from an input. Replace it with a period, comma, colon, semi
|
|
|
17
17
|
|
|
18
18
|
Immediately before returning, scan the complete response character by character for U+2014. Replace every occurrence, then scan again. Return only after the count is zero.
|
|
19
19
|
|
|
20
|
+
Do not wait for cleanup to avoid the character. Draft every break with ASCII punctuation from the start. When a title, label, or sentence invites a long dash, use a colon, period, comma, parentheses, or U+002D hyphen instead.
|
|
21
|
+
|
|
22
|
+
Use a colon or a new sentence between a list term and its explanation. Never type a long-dash separator in a heading, label, option, price, field description, or bullet.
|
|
23
|
+
|
|
24
|
+
Use straight ASCII quotation marks for generated labels and copy examples. Curly quotation marks are not required merely because text is being presented as UI copy.
|
|
25
|
+
|
|
26
|
+
Do not wrap a generated UI label in quotation marks when hierarchy, bold text, or a code span can distinguish it.
|
|
27
|
+
|
|
20
28
|
## Load the authority progressively
|
|
21
29
|
|
|
30
|
+
[references/agora-conversion.md](references/agora-conversion.md) governs conversion-context work. Load it immediately when the task writes, rewrites, plans, reviews, compares, tests, measures, or optimizes a conversion-relevant landing page, product page, pricing page, enterprise page, paywall, checkout, form, upgrade path, onboarding sequence, funnel, or experiment. Also load it when the user asks to improve conversion or interpret conversion evidence. New drafts count; do not require the user to say `conversion` or `optimize`. This load is mandatory and precedes the general marketing and optional craft reads below. Treat it as a bounded overlay inside `SELL` or `TRANSACT`, not a primary mode, modifier, or source of universal conversion laws.
|
|
31
|
+
|
|
22
32
|
Use [references/agora-marketing.md](references/agora-marketing.md) as the canonical authority. Read only the sections the task needs:
|
|
23
33
|
|
|
24
34
|
1. Always read `Core doctrine`, `User authority`, `Conflict hierarchy`, `Argument engine`, `Proof salience`, `Plain language and first-read comprehension`, and `Human voice and AI-writing-tell gate`.
|
|
25
35
|
2. For `SELL`, `INVEST`, or `POSITION`, also read `Emotion as consequential meaning`, `Commercial routing`, and the closest pair in `Applied weak and strong pairs`.
|
|
26
36
|
2b. For any asset containing a call to action, button, or closing invitation, also read `CTA standard`.
|
|
27
|
-
3. For
|
|
37
|
+
3. For `INDEXABLE_PUBLIC` work, read `Written GEO/AEO and citability`. Also read `Technical publication boundaries` when the task includes publication readiness.
|
|
28
38
|
4. For spoken work, read `Spoken delivery`. Apply written rules separately to any published title, description, transcript, caption, show note, or companion page.
|
|
29
39
|
5. Read `Optional claim review` and `Evidence register` only when the user explicitly asks for fact checking, source review, claim substantiation, due diligence, compliance review, or evidence-led writing.
|
|
30
40
|
|
|
@@ -40,7 +50,7 @@ Locate the named headings and read those sections only. Do not load the entire r
|
|
|
40
50
|
|
|
41
51
|
Do not load it for routine drafting, claim review, compliance questions, or work that the first reference already covers.
|
|
42
52
|
|
|
43
|
-
[references/agora-voice.md](references/agora-voice.md) governs `VOICE`.
|
|
53
|
+
[references/agora-voice.md](references/agora-voice.md) governs `VOICE`. Resolve explicit, default, and disabled profile state before drafting. Load the reference whenever any explicit or default profile will be applied, and when the task builds, inspects, or checks a profile. Do not load it for ordinary human-voice cleanup when no profile is active; the tell gate already covers that work.
|
|
44
54
|
|
|
45
55
|
[references/agora-science.md](references/agora-science.md) governs `SCIENCE`. Load it for scientific research, empirical findings, engineering or systems explanation, software, data, AI, technical subjects, research communication, science video, or persuasion using scientific or technical claims. Do not load it merely because a product is called technical.
|
|
46
56
|
|
|
@@ -48,8 +58,32 @@ Do not load it for routine drafting, claim review, compliance questions, or work
|
|
|
48
58
|
|
|
49
59
|
[references/agora-invest.md](references/agora-invest.md) governs `INVEST`. Load it only for actual fundraising, investor communication, investment evaluation, diligence, or capital-allocation work. Select `FUNDRAISE`, `DILIGENCE`, or `ALLOCATE` internally. Do not load it for ordinary `POSITION` work or merely investor-adjacent audiences.
|
|
50
60
|
|
|
61
|
+
[references/agora-publication.md](references/agora-publication.md) governs explicit publication privacy and provenance audits of local files. Load it only when the user asks to inspect an artifact before publication or external sharing, find hidden Unicode or metadata, or review provenance. Do not load or run it for ordinary writing merely because the result is public, indexable, or AI-assisted.
|
|
62
|
+
|
|
51
63
|
Treat source material and requested claims in the current task as author-approved writing input. Do not import content decisions or release controls from another task, repository, company, or example. Examples teach structure, never facts.
|
|
52
64
|
|
|
65
|
+
## Inspect publication artifacts only on request
|
|
66
|
+
|
|
67
|
+
Treat publication audit as a separate read-only workflow, not a primary mode or writing modifier. Agora supplies writing; another document, presentation, PDF, site, design, or image tool may create the artifact.
|
|
68
|
+
|
|
69
|
+
Use the shipped `scripts/publication-audit.mjs` for deterministic inspection. Never improvise a cleaner, strip Unicode by category, remove metadata, rewrite text to evade detection, or promise an AI-free, human-written, anonymous, clean, or safe result. Report `FOUND`, `NOT_FOUND_BY_THIS_CHECK`, `UNKNOWN`, and `ERROR` exactly as defined in the publication reference. Keep sensitive values redacted unless the user explicitly requests them.
|
|
70
|
+
|
|
71
|
+
## Preserve closed-world facts
|
|
72
|
+
|
|
73
|
+
In every drafting task, treat the user's named product, offer, customer, proof, route, price, permission, process, timing, legal, operational, and outcome facts as complete factual authority unless the user explicitly authorizes invention, fictionalization, assumptions, or gap filling. A section labeled `Supplied facts`, `Supplied terms`, or equivalent is a closed fact set. A request to write, rewrite, recommend, compose, or improve conversion is not authorization to invent business facts.
|
|
74
|
+
|
|
75
|
+
Write only supplied facts and necessary logical entailments. Preserve exact qualifiers, roles, quote status, causal status, commitments, terms, routes, and destinations. Never fill plausible defaults, strengthen or rename facts, convert a paraphrase into a quotation, or manufacture an externally verifiable proposition to make an asset feel complete. Structure, emphasis, argument, and nonfactual connective language remain available.
|
|
76
|
+
|
|
77
|
+
Prefer the supplied task verb when it precisely names the action. Necessary entailments and direct, bounded buyer interpretations are allowed. Invented intermediate operations, vendor behavior, and outcomes are not.
|
|
78
|
+
|
|
79
|
+
When the conversion overlay is loaded, apply its surface-specific route, pricing, experiment, proof, qualification, and placement contracts. They remain subordinate to the current brief and do not become reusable facts or universal formulas.
|
|
80
|
+
|
|
81
|
+
When the user identifies defects in a current asset and requests a revised composition or placement order, resolve each named defect explicitly with an action such as remove, relocate, replace, retain, or rewrite. Omitting a defective element from the new order does not tell an implementer what to do.
|
|
82
|
+
|
|
83
|
+
Before drafting, classify every requested component as an implementation recommendation, visible copy, or both. Return each requested component explicitly in its proper form. If one component is both, separate the implementation action from the ready-to-use wording so neither has to impersonate the other.
|
|
84
|
+
|
|
85
|
+
Return only the requested components. Do not append edit reasoning, a self-audit, alternate routes, or an offer to do more unless the user requests analysis. Examples in this skill and its references illustrate reasoning only. Do not treat their wording, order, or fact bundles as defaults. Reproduce wording only when the current brief marks it `REQUIRED EXACT` or otherwise explicitly requires exact text.
|
|
86
|
+
|
|
53
87
|
## Follow user authority
|
|
54
88
|
|
|
55
89
|
Agora is a writing system, not a content approval layer. Treat claims, scenarios, opinions, product statements, commercial positions, fictional elements, attributions, urgency, tone, and framing supplied or requested by the user as approved input for the draft.
|
|
@@ -149,7 +183,7 @@ For `SCIENCE + CASE_STUDY`, use scan-ready headings for implementation, validati
|
|
|
149
183
|
|
|
150
184
|
For a high-stakes hero, controlled commercial force comes from the inspectable operational decision or human agency, not a generic capability label or escalated fear. Preserve the exact named checks, quantifiers, obligations, human-review step, and material limitations across the composition.
|
|
151
185
|
|
|
152
|
-
For `INVEST + SCIENCE`, combine technical explanation with the user's investment thesis. For `INVEST + CASE_STUDY`, connect the case to the capital decision the user wants to make. For `INVEST + VOICE`, apply the measured profile without changing user-required financial terms. Apply GEO/AEO to
|
|
186
|
+
For `INVEST + SCIENCE`, combine technical explanation with the user's investment thesis. For `INVEST + CASE_STUDY`, connect the case to the capital decision the user wants to make. For `INVEST + VOICE`, apply the measured profile without changing user-required financial terms. Apply GEO/AEO to `INDEXABLE_PUBLIC` investment assets only, never automatically to other public assets, private decks, meetings, or diligence.
|
|
153
187
|
|
|
154
188
|
For a one-paragraph `INVEST` summary, give the result, interpretation, and capital use separate sentence jobs when the user wants that structure. Use strategic terms such as `wedge` when they fit the user's thesis.
|
|
155
189
|
|
|
@@ -173,6 +207,8 @@ Adapt depth to the format:
|
|
|
173
207
|
|
|
174
208
|
For `POSITION`, make the company legible, consequential, and distinct without pitch-deck language. Convert a workflow trigger into a recognizable situation when useful. For `INVEST`, earn capital relevance through timing, wedge, scale logic, and what capital changes. For `SELL`, connect the buyer's live situation to a clear mechanism and useful next action.
|
|
175
209
|
|
|
210
|
+
For `SELL`, apply `Delivery-model ownership` and, when rewriting supplied copy, `Rewrite regression gate` from the canonical marketing authority. Preserve user-selected framing.
|
|
211
|
+
|
|
176
212
|
For a very short `POSITION` asset, consider a trigger-first sentence before any category sentence: `When [condition], [subject] [mechanism].` Keep that shape when it sounds natural.
|
|
177
213
|
|
|
178
214
|
In that trigger-first shape, retain the subject's primary supplied operation. A condition-led opening may reorder the workflow, but it may not reduce the company to an error state or downstream action when the core verb carries the distinction. This is a HOUSE fidelity rule; it does not require every minor workflow step.
|
|
@@ -349,33 +385,37 @@ Channel rules change depth and tone. They do not erase the argument.
|
|
|
349
385
|
After the argument is drafted:
|
|
350
386
|
|
|
351
387
|
1. Honor the user's requested claims, framing, tone, and content decisions without adding policy commentary.
|
|
352
|
-
2.
|
|
353
|
-
3. Run
|
|
354
|
-
4.
|
|
355
|
-
5. Apply
|
|
356
|
-
6. Apply
|
|
357
|
-
7.
|
|
358
|
-
8.
|
|
359
|
-
9.
|
|
360
|
-
10.
|
|
361
|
-
11.
|
|
362
|
-
12.
|
|
388
|
+
2. For every draft, build a private fact ledger covering the complete response, including headings, labels, fill-in tokens, parentheticals, confirmations, conditional text, and rationale. Match every externally verifiable proposition to an explicit supplied fact, a necessary entailment, or explicit user authorization to invent. Delete or rewrite anything unmatched. When the brief is closed-world, apply the same test to every factual proposition. Plausibility, convention, usefulness, and likely implementation do not count as entailment.
|
|
389
|
+
3. Run claim, evidence, permission, disclosure, or compliance checks only when the user requested that review.
|
|
390
|
+
4. Run the first-read comprehension gate, the delivery-model ownership gate, the rewrite regression gate when rewriting supplied copy, the specialized-term gate, and the CTA gate. These run before any style, compression, or publication pass, and their result outranks all three.
|
|
391
|
+
5. Apply written GEO/AEO only to `INDEXABLE_PUBLIC` work, at passage level rather than sentence level.
|
|
392
|
+
6. Apply technical publication checks only to indexable public work.
|
|
393
|
+
7. Apply the human-voice and AI-writing-tell gate without deleting user-selected claims or diagnostic lists.
|
|
394
|
+
8. Compress repetition and decoration last, and only where compression does not raise decoding effort. Delete restatements that add no new relation, boundary, proof, or decision value. Do not end objective summaries with an inventory of entities already explained in the preceding sentences. Approximate length is a target, not permission to pad.
|
|
395
|
+
9. Run the final U+2014 scan across the complete response and confirm zero occurrences. If a long-dash construction appears during drafting, rewrite it with ASCII punctuation before continuing.
|
|
396
|
+
10. Unless exact, immutable, legal, technical, or user-required text must be preserved, scan for U+2018, U+2019, U+201C, and U+201D. Replace curly quotation marks and apostrophes in all other text, then scan again.
|
|
397
|
+
11. Treat a requested exact word count or range as an immutable output requirement, not a compression preference. Count the finished asset after removing Markdown syntax. Use the named channel's counting convention when supplied; otherwise use whitespace-delimited lexical tokens and treat a hyphenated compound as one word. Do not count the parts of a hyphenated compound separately. Verify with a counter when one is available. Record the private final integer and check both range inequalities numerically. Edit until an exact count is exact or a bounded count is inside the range. An exact count is not a maximum, and the shortest-complete-output default does not override it.
|
|
398
|
+
12. Build a private ledger of every explicit output constraint. Mark each entry satisfied by the finished asset's visible wording or measured property. Do not return while any entry fails. Implication does not satisfy an explicit scope, exclusion, format, sequence, route, status, or length requirement.
|
|
399
|
+
13. Make every requested component visibly distinguishable through hierarchy, spacing, or channel-native structure. The worksheet-label ban applies inside ready-to-use copy. Labels remain available outside the copy when the user requests labeled fields, when implementation recommendations need them, or when they are necessary to distinguish requested components.
|
|
400
|
+
14. For conversion compositions, load and apply the surface-specific route, pricing, experiment, proof, and placement contracts in the conversion reference. Verify that visible copy follows any returned placement order, every material qualifier stays attached to the fact it qualifies, conditional steps remain conditional, unknown destinations remain unknown, and proof keeps its supplied form and causal status. Trace the primary-action spine across the flow. Do not let a prerequisite replace the activation event, make an optional post-event action primary, or invent a destination after an unknown transition. Audit every parallel option's primary decision unit for its supported route type, exclusivity, material commitment, and action or destination; an FAQ may reinforce this distinction but cannot supply it first. Audit every checklist or readiness item for a distinct fact-grounded verification, dependency, consequence, or preparation action rather than a generic instruction to review or confirm prior copy. When collection, access, or start order is absent, keep the known terms separate and do not connect them with `after`, `before`, `then`, or `until`. Scale experiment-plan detail to the requested depth without removing the minimum controls needed to interpret the named business outcome. Treat route, term, proof, and qualification completeness as the safety floor; after that floor passes, preserve the strongest supported reader job, task, or operational decision as the argument.
|
|
363
401
|
|
|
364
402
|
When a sentence fails the comprehension gate, keep the underlying fact, name the concrete actor, action, object, and result, remove internal process language the reader does not need, split the overloaded sentence, restore any context the compression removed, rewrite the call to action to name its real destination, then test again. Do not repair unclear writing by adding explanatory parentheses, longer noun phrases, or a vague supporting sentence.
|
|
365
403
|
|
|
366
404
|
Keep these passes invisible. Mention a blocker only when a host rule or missing requirement makes the requested result impossible.
|
|
367
405
|
|
|
368
|
-
An active voice profile carries one narrow exception to the AI-vocabulary ban. The words on that profile's owned-vocabulary list, and only those words, are exempt, because they were measured across the corpus. The exception covers vocabulary alone: it never suppresses the stock-template bans, the significance-tail bans, the structural-tell rules,
|
|
406
|
+
An active voice profile carries one narrow exception to the AI-vocabulary ban. The words on that profile's owned-vocabulary list, and only those words, are exempt, because they were measured across the corpus. The exception covers vocabulary alone: it never suppresses the stock-template bans, the significance-tail bans, the structural-tell rules, curly-quote normalization where it applies, or the U+2014 ban.
|
|
369
407
|
|
|
370
408
|
Measured sentence length and paragraph shape describe a distribution, not a quota or a template to reproduce. Apply them without restating facts, mirroring a sample passage, or manufacturing a closing summary. A structural tell requires an identifiable prohibited construction; matching a measured length or paragraph distribution is not itself a tell.
|
|
371
409
|
|
|
372
|
-
|
|
410
|
+
Outside exact, immutable, legal, technical, or user-required text, do not generate curly or smart quotes in final copy. Remove prompt leakage, canned framing, generic significance tails, inflated abstractions, fake human texture, and repeated stock templates. Avoid decorative three-part rhetoric, but preserve necessary series. Never promise detector evasion. Never change user-required meaning to sound human.
|
|
373
411
|
|
|
374
412
|
## Return the result
|
|
375
413
|
|
|
376
414
|
Return one ready-to-use result first. Do not expose internal argument planning, mode labels, chain-of-thought, rule audits, or a policy recap.
|
|
377
415
|
|
|
378
|
-
Return finished copy, not
|
|
416
|
+
Return finished copy, not a worksheet. When a user requests a headline, subhead, CTA, qualification, subject line, or other named component, use normal hierarchy or spacing inside the ready-to-use asset. Outside that asset, label implementation recommendations or requested component fields when labels prevent ambiguity. Do not insert those editorial labels into the copy itself unless the user explicitly asks for them there.
|
|
417
|
+
|
|
418
|
+
Do not append a process explanation, compliance note, self-audit, rationale, alternate route, or offer to do more unless the user asks for it. Return only the requested deliverable and any components the task requires.
|
|
379
419
|
|
|
380
420
|
Default to the shortest complete output suited to the channel. Do not provide near-duplicate variants unless requested. Do not append warnings, disclaimers, or responsibility notes unless the user requests them or a host rule requires them.
|
|
381
421
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Maestro: Agora"
|
|
3
|
-
short_description: "
|
|
4
|
-
default_prompt: "Use $agora to write
|
|
3
|
+
short_description: "Writing and publication artifact review"
|
|
4
|
+
default_prompt: "Use $agora to write from my brief or inspect a local publication artifact for privacy metadata and provenance."
|
|
@@ -64,6 +64,8 @@ Rule [HOUSE]: evidence status determines whether invention is allowed. Boundary:
|
|
|
64
64
|
|
|
65
65
|
## Build the evidence packet
|
|
66
66
|
|
|
67
|
+
Use this as an optional completeness review only when the user requests case review. Outside review mode, use supplied and requested case facts as approved input, do not demand missing evidence, and do not invent facts the user did not supply or request.
|
|
68
|
+
|
|
67
69
|
Collect or mark missing before drafting:
|
|
68
70
|
|
|
69
71
|
- intended audience and desired decision;
|
|
@@ -105,6 +107,8 @@ A newly launched control does not prove the prior process lacked that control or
|
|
|
105
107
|
|
|
106
108
|
## Classify results before writing
|
|
107
109
|
|
|
110
|
+
Optional case-review control. Outside review mode, preserve the result status, certainty, and presentation the user requests rather than independently reclassifying or narrowing it.
|
|
111
|
+
|
|
108
112
|
Assign every result one class:
|
|
109
113
|
|
|
110
114
|
| Result class | Meaning | Treatment |
|
|
@@ -165,6 +169,8 @@ Apply a vanity-metric gate. A metric belongs only when it establishes reach, use
|
|
|
165
169
|
|
|
166
170
|
## Control permission and confidentiality
|
|
167
171
|
|
|
172
|
+
Optional case-review control. Apply permission, confidentiality, approval-state, and publication enforcement only when the user requests case review. Outside review mode, follow the user's names, permissions, confidentiality choices, and publication instructions.
|
|
173
|
+
|
|
168
174
|
Assign each publishable element one state:
|
|
169
175
|
|
|
170
176
|
| State | Meaning | Output rule |
|
|
@@ -186,6 +192,8 @@ Anonymization must protect identity without laundering the claim. Preserve the i
|
|
|
186
192
|
|
|
187
193
|
## Handle quotes and testimonials
|
|
188
194
|
|
|
195
|
+
Optional case-review control. Check source, permission, typicality, material connection, and quote status only when the user requests case review. Outside review mode, follow the quotations, attribution, and treatment the user supplies or requests.
|
|
196
|
+
|
|
189
197
|
Record for each quote:
|
|
190
198
|
|
|
191
199
|
- speaker and role;
|
|
@@ -207,7 +215,7 @@ Never:
|
|
|
207
215
|
|
|
208
216
|
Rule [A]: applicable consumer endorsements must reflect honest experience, avoid unsupported implied claims, and disclose material connections when needed to prevent deception. See the current [FTC Endorsement Guides](https://www.ecfr.gov/current/title-16/chapter-I/subchapter-B/part-255) and [FTC reviews and testimonials Q&A](https://www.ftc.gov/business-guidance/resources/consumer-reviews-testimonials-rule-questions-answers). Boundary: those authorities do not automatically govern every B2B, employment, creative, or internal case. Use them where applicable and use their truth principles as a conservative editorial floor elsewhere without making a legal claim.
|
|
209
217
|
|
|
210
|
-
Agora's U+2014
|
|
218
|
+
Agora's U+2014 ban still applies. Curly-quote normalization yields to exact, immutable, legal, technical, or user-required text. Never silently alter a quotation and retain an exact-quote label.
|
|
211
219
|
|
|
212
220
|
## Build a structured argument
|
|
213
221
|
|
|
@@ -299,19 +307,19 @@ Use the CTA standard in [agora-marketing.md](agora-marketing.md). `See the diffe
|
|
|
299
307
|
|
|
300
308
|
### `SCIENCE + CASE_STUDY`
|
|
301
309
|
|
|
302
|
-
Load [agora-science.md](agora-science.md).
|
|
310
|
+
Load [agora-science.md](agora-science.md). When explicit scientific or case review is active, keep observed result, mechanism, interpretation, recommendation, and unknowns distinct. Otherwise preserve the user's requested scientific and case framing.
|
|
303
311
|
|
|
304
312
|
### `SELL + CASE_STUDY`
|
|
305
313
|
|
|
306
|
-
Write the strongest buyer-relevant argument the
|
|
314
|
+
Write the strongest buyer-relevant argument the user's brief requests. Structure does not require chronological or academic prose. Apply result-boundary and evidence checks only when explicit case review is active.
|
|
307
315
|
|
|
308
316
|
### `VOICE + CASE_STUDY`
|
|
309
317
|
|
|
310
|
-
Voice may change rhythm and vocabulary. It may not change quote wording,
|
|
318
|
+
Voice may change rhythm, syntax, and measured vocabulary. It may not change the proposition, quote wording, roles, metrics, certainty, or attribution supplied in the user's current brief. Host-required text and findings from explicitly requested case review may constrain the result.
|
|
311
319
|
|
|
312
320
|
### `GEO/AEO + CASE_STUDY`
|
|
313
321
|
|
|
314
|
-
|
|
322
|
+
For `INDEXABLE_PUBLIC` cases, make project snapshot, role, method, result, period, and limitation legible in coherent passages. Expose supplied dates, sources, authorship, and evidence. Do not load the opening with every method detail or turn headings into keyword variants. Other written surfaces do not inherit GEO/AEO formatting.
|
|
315
323
|
|
|
316
324
|
## Maintain the case
|
|
317
325
|
|