@maestroagora/agora 1.0.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/.agents/plugins/marketplace.json +21 -0
- package/.claude-plugin/marketplace.json +15 -0
- package/.claude-plugin/plugin.json +22 -0
- package/.codex-plugin/plugin.json +39 -0
- package/LICENSE +21 -0
- package/README.md +136 -0
- package/assets/agora-orbit.svg +158 -0
- package/assets/icon.png +0 -0
- package/assets/maestro-agora-banner.png +0 -0
- package/package.json +56 -0
- package/scripts/install.mjs +400 -0
- package/skills/agora/SKILL.md +57 -0
- package/skills/agora/agents/openai.yaml +4 -0
- package/skills/agora/references/agora-marketing.md +894 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "maestro-agora",
|
|
3
|
+
"interface": {
|
|
4
|
+
"displayName": "Maestro: Agora"
|
|
5
|
+
},
|
|
6
|
+
"plugins": [
|
|
7
|
+
{
|
|
8
|
+
"name": "maestro-agora",
|
|
9
|
+
"source": {
|
|
10
|
+
"source": "url",
|
|
11
|
+
"url": "https://github.com/mbanderas/maestro-agora.git",
|
|
12
|
+
"ref": "main"
|
|
13
|
+
},
|
|
14
|
+
"policy": {
|
|
15
|
+
"installation": "AVAILABLE",
|
|
16
|
+
"authentication": "ON_INSTALL"
|
|
17
|
+
},
|
|
18
|
+
"category": "Productivity"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "maestro-agora",
|
|
3
|
+
"description": "Self-hosted marketplace for the Maestro: Agora marketing skill.",
|
|
4
|
+
"owner": {
|
|
5
|
+
"name": "Mark Laursen",
|
|
6
|
+
"url": "https://github.com/mbanderas"
|
|
7
|
+
},
|
|
8
|
+
"plugins": [
|
|
9
|
+
{
|
|
10
|
+
"name": "maestro-agora",
|
|
11
|
+
"source": "./",
|
|
12
|
+
"description": "Turn verified product truth into concise, argument-first copy across marketing, sales, editorial, outreach, interface, and spoken channels with the /agora skill."
|
|
13
|
+
}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "maestro-agora",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"displayName": "Maestro: Agora",
|
|
5
|
+
"description": "Turn verified product truth into concise, argument-first marketing and sales copy across written and spoken channels with the /agora skill.",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "Mark Laursen",
|
|
8
|
+
"url": "https://github.com/mbanderas"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/mbanderas/maestro-agora",
|
|
11
|
+
"repository": "https://github.com/mbanderas/maestro-agora",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"agent-skills",
|
|
15
|
+
"agora",
|
|
16
|
+
"marketing",
|
|
17
|
+
"copywriting",
|
|
18
|
+
"claude-code",
|
|
19
|
+
"geo",
|
|
20
|
+
"aeo"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "maestro-agora",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Maestro: Agora turns verified product truth into concise, argument-first copy across written and spoken channels.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Mark Laursen",
|
|
7
|
+
"url": "https://github.com/mbanderas"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/mbanderas/maestro-agora#readme",
|
|
10
|
+
"repository": "https://github.com/mbanderas/maestro-agora",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"agora",
|
|
14
|
+
"marketing",
|
|
15
|
+
"copywriting",
|
|
16
|
+
"codex",
|
|
17
|
+
"skills"
|
|
18
|
+
],
|
|
19
|
+
"skills": "./skills/",
|
|
20
|
+
"interface": {
|
|
21
|
+
"displayName": "Maestro: Agora",
|
|
22
|
+
"shortDescription": "Evidence-led, argument-first copy across every channel",
|
|
23
|
+
"longDescription": "Install Maestro: Agora in Codex for a direct /agora skill that turns supplied product truth and proof into concise marketing, sales, editorial, outreach, interface, and spoken copy while preserving claim limits.",
|
|
24
|
+
"developerName": "Mark Laursen",
|
|
25
|
+
"category": "Productivity",
|
|
26
|
+
"capabilities": [
|
|
27
|
+
"Interactive",
|
|
28
|
+
"Write"
|
|
29
|
+
],
|
|
30
|
+
"websiteURL": "https://github.com/mbanderas/maestro-agora",
|
|
31
|
+
"brandColor": "#7C3AED",
|
|
32
|
+
"composerIcon": "./assets/icon.png",
|
|
33
|
+
"defaultPrompt": [
|
|
34
|
+
"/agora Rewrite this page around one defensible argument and CTA.",
|
|
35
|
+
"/agora Shorten this copy without losing proof or qualifications.",
|
|
36
|
+
"/agora Draft a spoken script from the verified facts below."
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mark Laursen
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
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%" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">Maestro: Agora</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center"><strong>Verified truth, conducted into copy.</strong></p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
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>
|
|
11
|
+
<a href="https://www.npmjs.com/package/@maestroagora/agora"><img alt="npm version" src="https://img.shields.io/npm/v/@maestroagora/agora" /></a>
|
|
12
|
+
<a href="LICENSE"><img alt="MIT license" src="https://img.shields.io/badge/license-MIT-7c3aed" /></a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
Agora is a portable Agent Skill for marketing, sales, editorial, interface, outreach, and spoken copy. It gives an AI agent a research-backed argument method, a strict claim gate, channel-aware brevity rules, and written GEO/AEO guidance—without treating a persuasive framework as permission to invent the proof.
|
|
16
|
+
|
|
17
|
+
Give it product truth, evidence, constraints, and one desired action. The skill instructs the agent to return the shortest complete, ready-to-use draft first.
|
|
18
|
+
|
|
19
|
+
**One suite: fuse the answer, make the case, guard the spend.**
|
|
20
|
+
|
|
21
|
+
- **[Maestro Frontier](https://github.com/mbanderas/maestro)** — Fuses the model CLIs you already run into one judged, grounded answer.
|
|
22
|
+
- **[Maestro Agora](https://github.com/mbanderas/maestro-agora)** — Turns verified product truth into concise, argument-first copy without inventing the proof.
|
|
23
|
+
- **[Maestro CostGuard](https://github.com/mbanderas/costguard)** — Audits CI and cloud infrastructure for cost leaks and shows what to fix.
|
|
24
|
+
|
|
25
|
+
## Install
|
|
26
|
+
|
|
27
|
+
One command installs Agora for the shared Agent Skills path and Claude Code:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
npx -y @maestroagora/agora
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The default user install writes the same reviewed skill to:
|
|
34
|
+
|
|
35
|
+
- `~/.agents/skills/agora` for Codex and Agent Skills-compatible tools.
|
|
36
|
+
- `~/.claude/skills/agora` for Claude Code.
|
|
37
|
+
|
|
38
|
+
Choose a native target or project-local scope when you need one:
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
npx -y @maestroagora/agora --target cursor --scope project
|
|
42
|
+
npx -y @maestroagora/agora --target codex,claude --scope user
|
|
43
|
+
npx -y @maestroagora/agora --target universal --dry-run
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Supported targets are `universal`, `shared`, `codex`, `claude`, `cursor`, `gemini`, `copilot`, and `windsurf`. Add `--force` only when you intend to replace a different copy at the exact `agora` destination.
|
|
47
|
+
|
|
48
|
+
### Native plugin install
|
|
49
|
+
|
|
50
|
+
Claude Code:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
/plugin marketplace add mbanderas/maestro-agora
|
|
54
|
+
/plugin install maestro-agora@maestro-agora
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Codex CLI:
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
codex plugin marketplace add mbanderas/maestro-agora
|
|
61
|
+
codex plugin add maestro-agora@maestro-agora
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The npm installer is the broadest route across IDEs. The native plugin commands install the repository's matching Claude or Codex manifest.
|
|
65
|
+
|
|
66
|
+
## Use Agora
|
|
67
|
+
|
|
68
|
+
Invoke the skill directly, then provide the facts it may use:
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
/agora Rewrite this upgrade screen. Keep one CTA. Use only these verified facts: ...
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
In Codex, `$agora` and the skills picker can also select the installed skill. Other hosts may expose skills through their own picker or mention syntax; asking the agent to “use the agora skill” remains portable.
|
|
75
|
+
|
|
76
|
+
Agora activates for writing, rewriting, shortening, critiquing, and planning:
|
|
77
|
+
|
|
78
|
+
- Marketing and sales copy, CTAs, and microcopy.
|
|
79
|
+
- Landing, product, and comparison pages.
|
|
80
|
+
- Email, direct outreach, ads, and social posts.
|
|
81
|
+
- Mobile onboarding, upgrade, and paywall screens.
|
|
82
|
+
- Editorial content.
|
|
83
|
+
- Audio and video scripts plus titles, descriptions, transcripts, captions, show notes, and companion pages.
|
|
84
|
+
|
|
85
|
+
## What the skill enforces
|
|
86
|
+
|
|
87
|
+
Agora silently routes each asset as indexable public, public non-indexable written, private written, spoken-only, or hybrid. It then applies only the controls that fit the surface.
|
|
88
|
+
|
|
89
|
+
- **Argument before ornament.** Build one defensible belief shift, one decision path, and one primary action.
|
|
90
|
+
- **Proof beside the claim.** Preserve source, scope, date, qualification, and material limitations.
|
|
91
|
+
- **Shortest complete draft.** Remove repetition before evidence, legal meaning, accessibility, or next-step clarity.
|
|
92
|
+
- **Human voice controls.** Cut stock openings, vague hype, fabricated texture, template residue, and decorative recaps.
|
|
93
|
+
- **Claim gate.** Narrow, omit, or flag unsupported claims instead of supplying missing features, prices, routes, urgency, scarcity, testimonials, or results.
|
|
94
|
+
- **Ready copy first.** Return one usable draft without exposing private reasoning or producing near-duplicate variants unless asked.
|
|
95
|
+
|
|
96
|
+
The skill improves process discipline; it does not replace source review, legal review, or final human verification.
|
|
97
|
+
|
|
98
|
+
## Written GEO/AEO boundaries
|
|
99
|
+
|
|
100
|
+
For written assets, Agora treats generative-engine optimization and answer-engine optimization as clarity and evidence work: answer the reader's question early, name entities and scope, keep proof adjacent to claims, expose provenance, and make useful passages self-contained.
|
|
101
|
+
|
|
102
|
+
For indexable public pages, it can also flag technical publication checks such as crawlability, canonical consistency, structured data, and sitemap inclusion. These practices can improve eligibility and citability; they cannot promise retrieval, selection, quotation, citation, ranking, recommendation, referral, conversion, or revenue.
|
|
103
|
+
|
|
104
|
+
Spoken-only delivery skips GEO/AEO formatting. Published titles, descriptions, transcripts, captions, show notes, and companion pages receive the written treatment separately.
|
|
105
|
+
|
|
106
|
+
## How Agora works
|
|
107
|
+
|
|
108
|
+
<p align="center">
|
|
109
|
+
<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%" />
|
|
110
|
+
</p>
|
|
111
|
+
|
|
112
|
+
The public skill stays intentionally small:
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
skills/agora/
|
|
116
|
+
├── SKILL.md
|
|
117
|
+
├── agents/
|
|
118
|
+
│ └── openai.yaml
|
|
119
|
+
└── references/
|
|
120
|
+
└── agora-marketing.md
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
`SKILL.md` contains the operating workflow. `references/agora-marketing.md` is the canonical authority for evidence grades, ethical limits, persuasion controls, AI-writing-tell checks, and GEO/AEO boundaries. CiteSurge-specific rules remain isolated to CiteSurge work.
|
|
124
|
+
|
|
125
|
+
## Verify the package
|
|
126
|
+
|
|
127
|
+
```sh
|
|
128
|
+
npm run check
|
|
129
|
+
npx -y @maestroagora/agora --dry-run
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
The validation suite checks the strict skill root, plugin manifests, relative links, installer behavior, and the exact npm package allowlist.
|
|
133
|
+
|
|
134
|
+
## License
|
|
135
|
+
|
|
136
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="440" viewBox="0 0 1200 440" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">How Maestro Agora works</title>
|
|
3
|
+
<desc id="desc">An animated gold pen stroke conducts verified truth through argument, proof, voice, and a clear action into ready copy.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="background" x1="0" y1="0" x2="1" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#090b19"/>
|
|
7
|
+
<stop offset="0.52" stop-color="#111630"/>
|
|
8
|
+
<stop offset="1" stop-color="#07161c"/>
|
|
9
|
+
</linearGradient>
|
|
10
|
+
<radialGradient id="core" cx="50%" cy="42%" r="70%">
|
|
11
|
+
<stop offset="0" stop-color="#8b5cf6" stop-opacity="0.96"/>
|
|
12
|
+
<stop offset="0.55" stop-color="#5b3ac4" stop-opacity="0.78"/>
|
|
13
|
+
<stop offset="1" stop-color="#241a56" stop-opacity="0.2"/>
|
|
14
|
+
</radialGradient>
|
|
15
|
+
<linearGradient id="signal" x1="0" y1="0" x2="1" y2="0">
|
|
16
|
+
<stop offset="0" stop-color="#8b5cf6"/>
|
|
17
|
+
<stop offset="0.5" stop-color="#22d3ee"/>
|
|
18
|
+
<stop offset="1" stop-color="#f6b90b"/>
|
|
19
|
+
</linearGradient>
|
|
20
|
+
<linearGradient id="penInk" x1="0" y1="0" x2="1" y2="1">
|
|
21
|
+
<stop offset="0" stop-color="#fff2ad"/>
|
|
22
|
+
<stop offset="0.42" stop-color="#f6b90b"/>
|
|
23
|
+
<stop offset="1" stop-color="#a78bfa"/>
|
|
24
|
+
</linearGradient>
|
|
25
|
+
<pattern id="grid" width="36" height="36" patternUnits="userSpaceOnUse">
|
|
26
|
+
<path d="M 36 0 L 0 0 0 36" fill="none" stroke="#c4b5fd" stroke-opacity="0.055"/>
|
|
27
|
+
</pattern>
|
|
28
|
+
<filter id="glow" x="-80%" y="-80%" width="260%" height="260%">
|
|
29
|
+
<feGaussianBlur stdDeviation="7" result="blur"/>
|
|
30
|
+
<feMerge>
|
|
31
|
+
<feMergeNode in="blur"/>
|
|
32
|
+
<feMergeNode in="SourceGraphic"/>
|
|
33
|
+
</feMerge>
|
|
34
|
+
</filter>
|
|
35
|
+
<filter id="soft" x="-40%" y="-40%" width="180%" height="180%">
|
|
36
|
+
<feGaussianBlur stdDeviation="22"/>
|
|
37
|
+
</filter>
|
|
38
|
+
<clipPath id="frame">
|
|
39
|
+
<rect x="1" y="1" width="1198" height="438" rx="28"/>
|
|
40
|
+
</clipPath>
|
|
41
|
+
<style>
|
|
42
|
+
text { font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
|
|
43
|
+
.label { fill: #a5b4d4; font-size: 11px; font-weight: 700; letter-spacing: 2.8px; }
|
|
44
|
+
.node { fill: #dbeafe; font-size: 12px; font-weight: 750; letter-spacing: 1.7px; }
|
|
45
|
+
.route { stroke-dasharray: 5 13; animation: route 12s linear infinite; }
|
|
46
|
+
.orbit { transform-origin: 600px 220px; animation: orbit 34s linear infinite; }
|
|
47
|
+
.pulse { animation: pulse 3.4s ease-in-out infinite; }
|
|
48
|
+
.drift { animation: drift 6s ease-in-out infinite; }
|
|
49
|
+
.signal-dot { animation: shuttle 4.8s ease-in-out infinite; }
|
|
50
|
+
.pen-stroke { stroke-dasharray: 520; stroke-dashoffset: 520; animation: write 5.8s ease-in-out infinite; }
|
|
51
|
+
@keyframes route { to { stroke-dashoffset: -180; } }
|
|
52
|
+
@keyframes orbit { to { transform: rotate(360deg); } }
|
|
53
|
+
@keyframes pulse { 0%, 100% { opacity: .48; } 50% { opacity: 1; } }
|
|
54
|
+
@keyframes drift { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
|
|
55
|
+
@keyframes shuttle { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(94px); } }
|
|
56
|
+
@keyframes write { 0%, 12% { stroke-dashoffset: 520; opacity: .3; } 58%, 86% { stroke-dashoffset: 0; opacity: 1; } 100% { stroke-dashoffset: -520; opacity: .3; } }
|
|
57
|
+
@media (prefers-reduced-motion: reduce) {
|
|
58
|
+
.route, .orbit, .pulse, .drift, .signal-dot, .pen-stroke { animation: none; stroke-dashoffset: 0; }
|
|
59
|
+
}
|
|
60
|
+
</style>
|
|
61
|
+
</defs>
|
|
62
|
+
|
|
63
|
+
<g clip-path="url(#frame)">
|
|
64
|
+
<rect width="1200" height="440" fill="url(#background)"/>
|
|
65
|
+
<rect width="1200" height="440" fill="url(#grid)"/>
|
|
66
|
+
<ellipse cx="280" cy="55" rx="240" ry="145" fill="#7c3aed" opacity="0.12" filter="url(#soft)"/>
|
|
67
|
+
<ellipse cx="1010" cy="370" rx="270" ry="160" fill="#0ea5a8" opacity="0.13" filter="url(#soft)"/>
|
|
68
|
+
<path d="M-60 332 C160 204 300 378 485 270 S820 98 1260 210" fill="none" stroke="url(#signal)" stroke-width="1.2" stroke-opacity="0.28" class="route"/>
|
|
69
|
+
<path d="M-50 358 C180 232 318 395 510 291 S850 129 1250 232" fill="none" stroke="#93c5fd" stroke-width="0.7" stroke-opacity="0.14"/>
|
|
70
|
+
|
|
71
|
+
<g transform="translate(58 52)">
|
|
72
|
+
<rect width="210" height="31" rx="15.5" fill="#11162e" stroke="#7c83a6" stroke-opacity="0.35"/>
|
|
73
|
+
<circle cx="17" cy="15.5" r="4" fill="#f6b90b" class="pulse"/>
|
|
74
|
+
<text x="31" y="20" class="label">ARGUMENT-FIRST</text>
|
|
75
|
+
</g>
|
|
76
|
+
|
|
77
|
+
<text x="58" y="138" fill="#f8fafc" font-size="43" font-weight="760" letter-spacing="-1.7">Make the case.</text>
|
|
78
|
+
<text x="58" y="180" fill="#b8c2dd" font-size="23" font-weight="430">Then make every word earn its place.</text>
|
|
79
|
+
<text x="58" y="230" fill="#8390af" font-size="14.5">Verified truth in. Concise copy out.</text>
|
|
80
|
+
|
|
81
|
+
<g class="drift">
|
|
82
|
+
<rect x="58" y="285" width="198" height="72" rx="18" fill="#0d1329" stroke="#8b5cf6" stroke-opacity="0.4"/>
|
|
83
|
+
<text x="78" y="311" class="label">INPUT</text>
|
|
84
|
+
<text x="78" y="340" fill="#e9e7ff" font-size="16" font-weight="650">REALITY + EVIDENCE</text>
|
|
85
|
+
</g>
|
|
86
|
+
|
|
87
|
+
<path d="M258 321 C342 318 388 284 442 247 C471 228 505 222 535 220" fill="none" stroke="url(#penInk)" stroke-width="3" stroke-linecap="round" class="pen-stroke" filter="url(#glow)"/>
|
|
88
|
+
<g transform="translate(422 239) rotate(-34)" aria-hidden="true">
|
|
89
|
+
<path d="M0 0 L30 0 L42 7 L30 14 L0 14 Z" fill="#f6b90b" stroke="#fff2ad" stroke-opacity="0.8"/>
|
|
90
|
+
<circle cx="31" cy="7" r="2.5" fill="#111630"/>
|
|
91
|
+
</g>
|
|
92
|
+
|
|
93
|
+
<g>
|
|
94
|
+
<circle cx="600" cy="220" r="128" fill="none" stroke="#9f9bea" stroke-opacity="0.14"/>
|
|
95
|
+
<circle cx="600" cy="220" r="104" fill="url(#core)" stroke="#a78bfa" stroke-opacity="0.45" filter="url(#glow)"/>
|
|
96
|
+
<circle cx="600" cy="220" r="82" fill="#11152c" fill-opacity="0.64" stroke="#c4b5fd" stroke-opacity="0.22"/>
|
|
97
|
+
<text x="600" y="194" text-anchor="middle" class="label">ONE DEFENSIBLE</text>
|
|
98
|
+
<text x="600" y="231" text-anchor="middle" fill="#ffffff" font-size="28" font-weight="780" letter-spacing="-0.6">BELIEF</text>
|
|
99
|
+
<text x="600" y="258" text-anchor="middle" fill="#aeb8d3" font-size="12.5">truth · stakes · proof · action</text>
|
|
100
|
+
|
|
101
|
+
<g class="orbit">
|
|
102
|
+
<circle cx="600" cy="92" r="5" fill="#22d3ee" filter="url(#glow)"/>
|
|
103
|
+
<circle cx="728" cy="220" r="4" fill="#f6b90b"/>
|
|
104
|
+
<circle cx="600" cy="348" r="4" fill="#a78bfa"/>
|
|
105
|
+
<circle cx="472" cy="220" r="4" fill="#60a5fa"/>
|
|
106
|
+
</g>
|
|
107
|
+
|
|
108
|
+
<g>
|
|
109
|
+
<g transform="translate(556 66)">
|
|
110
|
+
<rect width="88" height="27" rx="13.5" fill="#10172d" stroke="#22d3ee" stroke-opacity="0.4"/>
|
|
111
|
+
<text x="44" y="18" text-anchor="middle" class="node">ARGUMENT</text>
|
|
112
|
+
</g>
|
|
113
|
+
<g transform="translate(704 206)">
|
|
114
|
+
<rect width="70" height="27" rx="13.5" fill="#10172d" stroke="#f6b90b" stroke-opacity="0.5"/>
|
|
115
|
+
<text x="35" y="18" text-anchor="middle" class="node">PROOF</text>
|
|
116
|
+
</g>
|
|
117
|
+
<g transform="translate(562 347)">
|
|
118
|
+
<rect width="76" height="27" rx="13.5" fill="#10172d" stroke="#a78bfa" stroke-opacity="0.4"/>
|
|
119
|
+
<text x="38" y="18" text-anchor="middle" class="node">VOICE</text>
|
|
120
|
+
</g>
|
|
121
|
+
<g transform="translate(429 206)">
|
|
122
|
+
<rect width="66" height="27" rx="13.5" fill="#10172d" stroke="#60a5fa" stroke-opacity="0.4"/>
|
|
123
|
+
<text x="33" y="18" text-anchor="middle" class="node">CTA</text>
|
|
124
|
+
</g>
|
|
125
|
+
</g>
|
|
126
|
+
</g>
|
|
127
|
+
|
|
128
|
+
<path d="M738 220 H884" fill="none" stroke="url(#signal)" stroke-width="2" stroke-linecap="round" class="route"/>
|
|
129
|
+
<circle cx="764" cy="220" r="4" fill="#22d3ee" class="signal-dot"/>
|
|
130
|
+
|
|
131
|
+
<g transform="translate(878 107)">
|
|
132
|
+
<rect width="264" height="246" rx="24" fill="#0b1422" fill-opacity="0.86" stroke="#f6b90b" stroke-opacity="0.38"/>
|
|
133
|
+
<rect x="20" y="20" width="92" height="25" rx="12.5" fill="#35290e"/>
|
|
134
|
+
<text x="66" y="37" text-anchor="middle" fill="#ffd65b" font-size="10.5" font-weight="800" letter-spacing="1.8">OUTPUT</text>
|
|
135
|
+
<text x="20" y="82" fill="#f8fafc" font-size="23" font-weight="730">Ready copy</text>
|
|
136
|
+
<text x="20" y="110" fill="#9aa8c4" font-size="13.5">Shortest complete version.</text>
|
|
137
|
+
<g transform="translate(20 137)">
|
|
138
|
+
<circle cx="6" cy="6" r="6" fill="#8b5cf6"/>
|
|
139
|
+
<path d="m3 6 2 2 4-5" fill="none" stroke="#fff" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
140
|
+
<text x="22" y="11" fill="#cbd5e1" font-size="13">Claim gate</text>
|
|
141
|
+
</g>
|
|
142
|
+
<g transform="translate(20 171)">
|
|
143
|
+
<circle cx="6" cy="6" r="6" fill="#22d3ee"/>
|
|
144
|
+
<path d="m3 6 2 2 4-5" fill="none" stroke="#07161c" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
145
|
+
<text x="22" y="11" fill="#cbd5e1" font-size="13">Voice gate</text>
|
|
146
|
+
</g>
|
|
147
|
+
<g transform="translate(20 205)">
|
|
148
|
+
<circle cx="6" cy="6" r="6" fill="#f6b90b"/>
|
|
149
|
+
<path d="m3 6 2 2 4-5" fill="none" stroke="#07161c" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
150
|
+
<text x="22" y="11" fill="#cbd5e1" font-size="13">Format router</text>
|
|
151
|
+
</g>
|
|
152
|
+
</g>
|
|
153
|
+
|
|
154
|
+
<text x="58" y="405" class="label">WRITE · VERIFY · COMPRESS</text>
|
|
155
|
+
<text x="1142" y="405" text-anchor="end" fill="#f6b90b" font-size="11" font-weight="700" letter-spacing="1.6">MAESTRO · AGORA</text>
|
|
156
|
+
</g>
|
|
157
|
+
<rect x="1" y="1" width="1198" height="438" rx="28" fill="none" stroke="#6f78a3" stroke-opacity="0.25"/>
|
|
158
|
+
</svg>
|
package/assets/icon.png
ADDED
|
Binary file
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@maestroagora/agora",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Install Maestro: Agora, the evidence-led marketing skill for AI coding agents.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"agora": "scripts/install.mjs"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
".agents/plugins/marketplace.json",
|
|
11
|
+
".claude-plugin/marketplace.json",
|
|
12
|
+
".claude-plugin/plugin.json",
|
|
13
|
+
".codex-plugin/plugin.json",
|
|
14
|
+
"LICENSE",
|
|
15
|
+
"README.md",
|
|
16
|
+
"assets/agora-orbit.svg",
|
|
17
|
+
"assets/icon.png",
|
|
18
|
+
"assets/maestro-agora-banner.png",
|
|
19
|
+
"scripts/install.mjs",
|
|
20
|
+
"skills/agora"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"check": "npm run validate && npm test && npm run pack:check",
|
|
24
|
+
"pack:check": "node scripts/pack-check.mjs",
|
|
25
|
+
"prepublishOnly": "npm run check",
|
|
26
|
+
"test": "node --test tests/install.test.mjs",
|
|
27
|
+
"validate": "node scripts/validate.mjs"
|
|
28
|
+
},
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=18"
|
|
31
|
+
},
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "git+https://github.com/mbanderas/maestro-agora.git"
|
|
35
|
+
},
|
|
36
|
+
"homepage": "https://github.com/mbanderas/maestro-agora#readme",
|
|
37
|
+
"bugs": {
|
|
38
|
+
"url": "https://github.com/mbanderas/maestro-agora/issues"
|
|
39
|
+
},
|
|
40
|
+
"author": "Mark Laursen",
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
},
|
|
45
|
+
"keywords": [
|
|
46
|
+
"agent-skills",
|
|
47
|
+
"maestro",
|
|
48
|
+
"marketing",
|
|
49
|
+
"copywriting",
|
|
50
|
+
"codex",
|
|
51
|
+
"claude-code",
|
|
52
|
+
"cursor",
|
|
53
|
+
"geo",
|
|
54
|
+
"aeo"
|
|
55
|
+
]
|
|
56
|
+
}
|