@tidyfactor/marketing 1.3.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/.tidyfactor +52 -0
- package/AGENTS.md +41 -0
- package/CHANGELOG.md +53 -0
- package/LICENSE +17 -0
- package/README.ar.md +299 -0
- package/README.de.md +44 -0
- package/README.es.md +44 -0
- package/README.fa.md +44 -0
- package/README.fr.md +44 -0
- package/README.md +320 -0
- package/README.pt.md +44 -0
- package/README.zh.md +44 -0
- package/SKILL-REGISTRY.md +36 -0
- package/SKILL.md +30 -0
- package/VISION.md +25 -0
- package/assets/hero-banner.png +0 -0
- package/assets/og-default.png +0 -0
- package/bin/add-skill.js +50 -0
- package/bin/create-kit.js +101 -0
- package/bin/remove-skill.js +24 -0
- package/brand.json +67 -0
- package/package.json +73 -0
- package/references/commands/advertising.md +27 -0
- package/references/commands/brief.md +17 -0
- package/references/commands/content.md +26 -0
- package/references/commands/email.md +26 -0
- package/references/commands/growth.md +27 -0
- package/references/commands/promotions.md +26 -0
- package/references/commands/social.md +27 -0
- package/references/commands/strategy.md +25 -0
- package/references/memory/ad-copy-templates.md +93 -0
- package/references/memory/arabic-writing.md +71 -0
- package/references/memory/decision-points.md +73 -0
- package/references/memory/frameworks.md +86 -0
- package/references/memory/lifecycle-flows.md +106 -0
- package/references/memory/metrics-benchmarks.md +70 -0
- package/references/memory/philosophy.md +16 -0
- package/references/memory/platform-specs.md +75 -0
- package/references/memory/promotions-math.md +56 -0
- package/references/memory/quality-bar.md +55 -0
- package/references/workflows/brief.md +72 -0
- package/references/workflows/campaign-launch.md +73 -0
- package/references/workflows/content-engine.md +68 -0
- package/references/workflows/email-lifecycle.md +55 -0
- package/references/workflows/paid-acquisition.md +66 -0
- package/references/workflows/promo-conversion.md +58 -0
- package/references/workflows/social-growth.md +65 -0
- package/references/workflows/viral-retention.md +63 -0
- package/tools/build-skill.js +206 -0
- package/tools/validate_skill.py +112 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Workflow: campaign-launch
|
|
2
|
+
|
|
3
|
+
One outcome: A complete, data-backed Campaign Strategy or Product Launch Plan with brand positioning, competitive differentiation, phased milestones, ICE experiment prioritization, channel allocation, and KPI targets.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Execution Steps
|
|
8
|
+
|
|
9
|
+
### 0. CDL Marketing Brief Resolution
|
|
10
|
+
1. Check `.tidyfactor/marketing-brief.md`. If present, adopt established target market (M1), voice archetype (M2), funnel stage (M3), and core offer (M4).
|
|
11
|
+
2. If absent and user prompt contains ambiguous parameters, run thin arbitration from `../memory/decision-points.md` (single-round batching, max 3 questions).
|
|
12
|
+
3. If skip conditions apply, proceed immediately with conservative defaults.
|
|
13
|
+
|
|
14
|
+
### 1. Brand Positioning & Mechanism Diagnosis
|
|
15
|
+
Using `../memory/frameworks.md`:
|
|
16
|
+
- **Positioning Statement**: Formulate the canonical statement: `For [Audience], [Brand] is the [Category] that [Benefit], because [Factual Proof].`
|
|
17
|
+
- **Competitive Differentiation**: Compare against 2-3 named alternatives and designate the **ONE attribute to own**.
|
|
18
|
+
- **Anti-Cliché Review**: Verify zero filler buzzwords ("cutting-edge", "innovative solutions") per `../memory/quality-bar.md`.
|
|
19
|
+
- **Target Buyer Avatar & Regional Calibration**: Define acute pain points, alternatives tried, core transformation, and target market (e.g. KSA, UAE, Egypt, or Global).
|
|
20
|
+
|
|
21
|
+
### 2. Positioning & Angle Architecture
|
|
22
|
+
Select 3 core campaign angles using `../memory/frameworks.md`:
|
|
23
|
+
- **Angle 1**: Pain / Problem-focused (Loss Aversion / PAS).
|
|
24
|
+
- **Angle 2**: Logic / Efficiency & Transformation (BAB / Anchoring).
|
|
25
|
+
- **Angle 3**: Social Status / Aspirational.
|
|
26
|
+
|
|
27
|
+
### 3. Phased Orchestration Architecture
|
|
28
|
+
Structure the rollout into 3 distinct operational phases:
|
|
29
|
+
|
|
30
|
+
#### Phase A: Pre-Launch / Warm-up (T-30 to T-1 Days)
|
|
31
|
+
- Build VIP waitlist / early-bird opt-in with a high-value lead magnet.
|
|
32
|
+
- Tease behind-the-scenes, problem validation content, and customer interviews.
|
|
33
|
+
- Goal: Secure 30-50% of launch revenue pipeline before Day 1.
|
|
34
|
+
|
|
35
|
+
#### Phase B: Launch Day / Live Blitz (T-0 to T+3 Days)
|
|
36
|
+
- Multi-channel synchronized blast: Email broadcast + Organic Social blitz + Paid Ads launch.
|
|
37
|
+
- Early bird bonuses / fast-action incentives active for first 48 hours only.
|
|
38
|
+
- Live stream, community Q&A, or real-time proof sharing.
|
|
39
|
+
|
|
40
|
+
#### Phase C: Momentum & Retention (T+4 to T+14 Days)
|
|
41
|
+
- Case studies and early adopter reviews spotlight.
|
|
42
|
+
- Cart close / deadline reminder sequence (last 24 hours).
|
|
43
|
+
- Post-purchase onboarding and automated review collection.
|
|
44
|
+
|
|
45
|
+
### 4. Growth Experimentation (ICE Score Prioritization)
|
|
46
|
+
Using `../memory/metrics-benchmarks.md`:
|
|
47
|
+
- Prioritize top 3 launch experiments using the ICE Score ($\text{Impact} \times \text{Confidence} \times \text{Ease}$).
|
|
48
|
+
- Document exact scientific hypotheses before spending budget.
|
|
49
|
+
|
|
50
|
+
### 5. Channel Budget & KPI Scorecard
|
|
51
|
+
Define budget allocation across channels and set quantitative benchmarks using `../memory/metrics-benchmarks.md`:
|
|
52
|
+
- Channel Split (% Organic, % Meta/Google Paid, % Email, % Influencer).
|
|
53
|
+
- Expected CPA, CVR, Target ROAS, and Stop-Loss thresholds.
|
|
54
|
+
|
|
55
|
+
### 6. Pre-Emit Quality Self-Critique
|
|
56
|
+
Before emitting the final strategy, evaluate against all 7 axes from `../memory/quality-bar.md` and stamp:
|
|
57
|
+
```markdown
|
|
58
|
+
/* Pre-emit critique: P5 H5 E5 S5 R5 V5 D5 */
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Validation Checklist
|
|
64
|
+
|
|
65
|
+
- [ ] CDL brief parameters resolved from `.tidyfactor/marketing-brief.md` or prompt defaults
|
|
66
|
+
- [ ] Canonical positioning statement formulated with concrete proof (no generic slogans)
|
|
67
|
+
- [ ] Competitive differentiation table designates 1 primary attribute to own
|
|
68
|
+
- [ ] 3 distinct psychological messaging angles articulated
|
|
69
|
+
- [ ] Top 3 launch experiments scored and ranked using ICE scoring model
|
|
70
|
+
- [ ] Phased timeline contains explicit milestones for Pre-launch, Launch Day, and Post-launch
|
|
71
|
+
- [ ] Channel budget split sums to 100% with concrete dollar/percentage allocations
|
|
72
|
+
- [ ] Numeric target KPIs included (Expected CVR %, Target CPA $, Minimum ROAS)
|
|
73
|
+
- [ ] 7-Axis Quality Stamp included with scores >= 4/5
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Workflow: content-engine
|
|
2
|
+
|
|
3
|
+
One outcome: A complete multi-channel content batch, SEO Pillar + Cluster content plan, 30-day publishing calendar, or high-open newsletter blueprint.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Execution Steps
|
|
8
|
+
|
|
9
|
+
### 0. CDL Marketing Brief Resolution
|
|
10
|
+
1. Check `.tidyfactor/marketing-brief.md`. If present, adopt established target market (M1), voice archetype (M2), and deliverable depth (M5).
|
|
11
|
+
2. If absent and user prompt contains ambiguous parameters, run thin arbitration from `../memory/decision-points.md` (single-round batching, max 3 questions).
|
|
12
|
+
3. If skip conditions apply, proceed immediately with conservative defaults.
|
|
13
|
+
|
|
14
|
+
### 1. Content Pillar & Format Selection
|
|
15
|
+
Establish 4 core content pillars:
|
|
16
|
+
- **Pillar 1: Authority & Case Studies (30%)** — Real metrics, teardowns, client transformations, frameworks.
|
|
17
|
+
- **Pillar 2: Contrarian / Perspective (25%)** — Debunking industry myths, hot takes, "why [common practice] is dead".
|
|
18
|
+
- **Pillar 3: Tactical / How-To (25%)** — Step-by-step checklists, code snippets, templates, workflows.
|
|
19
|
+
- **Pillar 4: Culture & Behind-the-Scenes (20%)** — Founder journey, design iterations, team wins/losses.
|
|
20
|
+
|
|
21
|
+
### 2. Multi-Platform Post Batch Generation
|
|
22
|
+
Using `../memory/platform-specs.md` and `../memory/frameworks.md`:
|
|
23
|
+
- Craft **3-Second Visual & Verbal Hooks** tailored to each selected platform (LinkedIn, X, Instagram, TikTok).
|
|
24
|
+
- Apply **LinkedIn B2B frameworks** (POV opinions, breakdown of client transformations, behind-the-build lessons).
|
|
25
|
+
- Write high-retention body copy with line-break rhythm, bulleted insights, and zero filler prose.
|
|
26
|
+
- Attach specific, low-friction **Calls-to-Action (CTAs)**.
|
|
27
|
+
|
|
28
|
+
### 3. SEO Pillar + Cluster Strategy (If SEO Intent)
|
|
29
|
+
Using `../memory/frameworks.md`:
|
|
30
|
+
- Map target keywords across **3 Intent Buckets**: Informational (TOFU), Commercial (MOFU), and Transactional (BOFU).
|
|
31
|
+
- Formulate 1 comprehensive **Pillar Guide** (2,500 - 3,500 words).
|
|
32
|
+
- Architect 3-5 **Supporting Cluster Posts** targeting long-tail queries with bidirectional internal linking.
|
|
33
|
+
- Review Technical & On-Page checklist (H1/H2 hierarchy, Title/Meta caps, Schema markup).
|
|
34
|
+
|
|
35
|
+
### 4. Editorial Calendar & Distribution Grid
|
|
36
|
+
Assemble a weekly or monthly grid:
|
|
37
|
+
- **Date & Time**: Day of week + optimal posting window.
|
|
38
|
+
- **Platform**: Destination channel.
|
|
39
|
+
- **Pillar & Topic**: Core subject and theme.
|
|
40
|
+
- **Format**: Video (Reels/Shorts/TikTok), Carousel, Thread/Article, or Image + Caption.
|
|
41
|
+
- **Visual Asset Brief**: Image/video prompt, slide count, or screen-recording cue.
|
|
42
|
+
|
|
43
|
+
### 5. Newsletter Blueprint (If Requested)
|
|
44
|
+
Structure the newsletter layout:
|
|
45
|
+
- **Subject Line Options**: 3 A/B test variations (Curiosity, Direct Benefit, Urgency).
|
|
46
|
+
- **Preview Text**: 1 punchy sentence under 50 characters.
|
|
47
|
+
- **Main Story / Deep Dive**: 400-800 words following Hook-Story-Offer.
|
|
48
|
+
- **Quick Links / Curated Value**: 3 bulleted high-value resources.
|
|
49
|
+
- **Primary CTA & P.S. Hook**: Clear link to core offer + curiosity-inducing postscript.
|
|
50
|
+
|
|
51
|
+
### 6. Pre-Emit Quality Self-Critique
|
|
52
|
+
Before emitting the final content assets, evaluate against all 7 axes from `../memory/quality-bar.md` and stamp:
|
|
53
|
+
```markdown
|
|
54
|
+
/* Pre-emit critique: P5 H5 E5 S5 R5 V5 D5 */
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Validation Checklist
|
|
60
|
+
|
|
61
|
+
- [ ] CDL brief parameters resolved from `.tidyfactor/marketing-brief.md` or prompt defaults
|
|
62
|
+
- [ ] Every post includes a 0-3s attention hook matching platform specs
|
|
63
|
+
- [ ] Content pillars balanced across authority, tactical value, and contrarian perspectives
|
|
64
|
+
- [ ] If SEO content: Keywords categorized into Informational, Commercial, or Transactional intent
|
|
65
|
+
- [ ] Formatting is clean with line breaks, bullets, and platform-appropriate character lengths
|
|
66
|
+
- [ ] Every post or newsletter issue has an explicit, measurable Call to Action
|
|
67
|
+
- [ ] 3 distinct A/B subject lines provided for newsletters / long-form articles
|
|
68
|
+
- [ ] 7-Axis Quality Stamp included with scores >= 4/5
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Workflow: email-lifecycle
|
|
2
|
+
|
|
3
|
+
One outcome: A complete email list growth blueprint, 5-part welcome onboarding sequence, 3-stage abandoned cart recovery flow, or broadcast email campaign.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Execution Steps
|
|
8
|
+
|
|
9
|
+
### 0. CDL Marketing Brief Resolution
|
|
10
|
+
1. Check `.tidyfactor/marketing-brief.md`. If present, adopt established target market (M1), voice archetype (M2), and funnel stage (M3).
|
|
11
|
+
2. If absent and user prompt contains ambiguous parameters, run thin arbitration from `../memory/decision-points.md` (single-round batching, max 3 questions).
|
|
12
|
+
3. If skip conditions apply, proceed immediately with conservative defaults.
|
|
13
|
+
|
|
14
|
+
### 1. List Growth & Lead Magnet Engineering
|
|
15
|
+
Define the lead capture mechanism:
|
|
16
|
+
- **Lead Magnet Format**: Specific checklist, cheat sheet, calculator, mini-course, or discount voucher (must deliver immediate win in under 10 minutes).
|
|
17
|
+
- **Opt-in Form Copy**: Headline focused on the outcome, 2 bullet points of what's inside, single low-friction form field (Email only).
|
|
18
|
+
- **Placement Strategy**: Sticky header bar, inline blog callout, exit-intent popup (triggered on mouse leave or 60s dwell time).
|
|
19
|
+
|
|
20
|
+
### 2. 5-Part Welcome & Indoctrination Drip Sequence
|
|
21
|
+
Using `../memory/lifecycle-flows.md` and `../memory/frameworks.md`, draft full copy for each email:
|
|
22
|
+
- **Email 1 (Day 0 - Immediate)**: Delivery + Whitelist instruction + Expectation setting.
|
|
23
|
+
- **Email 2 (Day 1 - 24h)**: Origin Story & Epiphany Bridge (Building emotional connection).
|
|
24
|
+
- **Email 3 (Day 2 - 48h)**: Paradigm Shift / Myth Busting (Overcoming internal objections).
|
|
25
|
+
- **Email 4 (Day 3 - 72h)**: Case Study & Proof (Overcoming external objections).
|
|
26
|
+
- **Email 5 (Day 4 - 96h)**: The Invitation / Fast-Action Offer with Urgency.
|
|
27
|
+
|
|
28
|
+
### 3. 3-Stage Abandoned Cart Recovery (E-Commerce / Digital Offer)
|
|
29
|
+
Draft the 3 sequential messages:
|
|
30
|
+
- **Stage 1 (1 Hour)**: Helpful Customer Care & Cart Link (No discount).
|
|
31
|
+
- **Stage 2 (24 Hours)**: Top 3 Customer Testimonials + FAQs & Guarantee.
|
|
32
|
+
- **Stage 3 (48 Hours)**: Expiring 10% Discount Code or Free Bonus Gift + Deadline Countdown.
|
|
33
|
+
|
|
34
|
+
### 4. Broadcast Campaign (Promotions / Newsletters)
|
|
35
|
+
For one-off announcements or sales:
|
|
36
|
+
- Structure copy using PAS or BAB.
|
|
37
|
+
- Implement urgency triggers (closing date/time).
|
|
38
|
+
|
|
39
|
+
### 5. Pre-Emit Quality Self-Critique
|
|
40
|
+
Before emitting the final email copy or flows, evaluate against all 7 axes from `../memory/quality-bar.md` and stamp:
|
|
41
|
+
```markdown
|
|
42
|
+
/* Pre-emit critique: P5 H5 E5 S5 R5 V5 D5 */
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Validation Checklist
|
|
48
|
+
|
|
49
|
+
- [ ] CDL brief parameters resolved from `.tidyfactor/marketing-brief.md` or prompt defaults
|
|
50
|
+
- [ ] Lead magnet promises a specific, actionable win achievable in < 10 minutes
|
|
51
|
+
- [ ] Every email includes 3 distinct subject line options (Curiosity, Direct, Urgency)
|
|
52
|
+
- [ ] Delay intervals and triggers explicitly specified for every automated step
|
|
53
|
+
- [ ] Mobile-optimized layout with short paragraphs (1-3 sentences) and distinct button/text CTAs
|
|
54
|
+
- [ ] Cart recovery flow escalates logically from support -> social proof -> discount urgency
|
|
55
|
+
- [ ] 7-Axis Quality Stamp included with scores >= 4/5
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Workflow: paid-acquisition
|
|
2
|
+
|
|
3
|
+
One outcome: Multi-variation ad copy matrices (3 distinct psychological angles), high-converting landing page wireframe messaging, 7-Dimension CRO audit, Meta/Google campaign architectures, or a first test campaign setup.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Execution Steps
|
|
8
|
+
|
|
9
|
+
### 0. CDL Marketing Brief Resolution
|
|
10
|
+
1. Check `.tidyfactor/marketing-brief.md`. If present, adopt established target market (M1), voice archetype (M2), funnel stage (M3), and core offer (M4).
|
|
11
|
+
2. If absent and user prompt contains ambiguous parameters, run thin arbitration from `../memory/decision-points.md` (single-round batching, max 3 questions).
|
|
12
|
+
3. If skip conditions apply, proceed immediately with conservative defaults.
|
|
13
|
+
|
|
14
|
+
### 1. Direct Response Ad Copy Generation (Anti-Cliché Rule)
|
|
15
|
+
Using `../memory/ad-copy-templates.md` and `../memory/frameworks.md`:
|
|
16
|
+
- Draft **3 distinct ad variations** across psychological angles:
|
|
17
|
+
- **Variation A (Pain / Agitation - Loss Aversion)**: Target the specific daily friction and cost of doing nothing.
|
|
18
|
+
- **Variation B (Logic / Efficiency / ROI - Anchoring)**: Highlight speed, metrics, math, and seamless automation.
|
|
19
|
+
- **Variation C (Aspirational / Social Proof)**: Highlight peer success and transformation.
|
|
20
|
+
- Enforce the **Anti-Cliché Replacement Rule**: Zero generic filler adjectives ("cutting-edge", "seamless", "innovative") per `../memory/quality-bar.md`. Replace every adjective with a specific number, mechanism, or proof point.
|
|
21
|
+
- For each variation provide: Primary Text, 3 Catchy Headlines (< 30 chars), Description (< 90 chars), Recommended CTA Button.
|
|
22
|
+
|
|
23
|
+
### 2. Google Responsive Search Ads (RSA) Matrix
|
|
24
|
+
- 15 Diverse Headlines following the distribution rule (Keywords, Benefits, Social Proof, Urgency).
|
|
25
|
+
- 4 Compelling Descriptions (< 90 characters each).
|
|
26
|
+
- List of 10 Negative Keywords to prevent wasted spend.
|
|
27
|
+
|
|
28
|
+
### 3. High-Converting Landing Page Messaging & 7-Dimension CRO Architecture
|
|
29
|
+
Structure the landing page wireframe section by section:
|
|
30
|
+
- **Section 1: Hero (Above the Fold - 5-Second Clarity Test)**:
|
|
31
|
+
- Eyebrow badge / Category label.
|
|
32
|
+
- Main Headline (Outcome + Timeframe without Pain).
|
|
33
|
+
- Subheadline (The Mechanism).
|
|
34
|
+
- Primary CTA Button + Trust Badge + 1-Click Mobile Checkout Cue.
|
|
35
|
+
- Hero visual mockup description.
|
|
36
|
+
- **Section 2: Social Proof Bar**: Logos of trusted clients or press mentions.
|
|
37
|
+
- **Section 3: The Old Way vs. The New Way**: 2-column contrast table.
|
|
38
|
+
- **Section 4: Core Features & Benefits**: 3 benefit cards with screenshots/icons.
|
|
39
|
+
- **Section 5: Customer Video/Written Testimonials**: Detailed case study transformation.
|
|
40
|
+
- **Section 6: Pricing / Offer Stack (Anchoring & Decoy Effect)**: Price, inclusions, bonuses, and risk-reversal guarantee.
|
|
41
|
+
- **Section 7: FAQ Accordion**: Answering the top 5 buying objections.
|
|
42
|
+
- **Section 8: Final Call to Action Banner**: Urgency reminder + CTA button.
|
|
43
|
+
|
|
44
|
+
### 4. Campaign Budget & Testing Architecture
|
|
45
|
+
- Campaign type (Advantage+ / CBO vs. ABO).
|
|
46
|
+
- Testing budget rules ($20-$50/day test split across 3-5 creatives for 72 hours).
|
|
47
|
+
- Kill / Scale rules: Kill creatives with CTR < 1.0% or CPC > 2x target CPA; Scale winning creatives by +20% every 48 hours.
|
|
48
|
+
|
|
49
|
+
### 5. Pre-Emit Quality Self-Critique
|
|
50
|
+
Before emitting ad copy or landing page wireframes, evaluate against all 7 axes from `../memory/quality-bar.md` and stamp:
|
|
51
|
+
```markdown
|
|
52
|
+
/* Pre-emit critique: P5 H5 E5 S5 R5 V5 D5 */
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Validation Checklist
|
|
58
|
+
|
|
59
|
+
- [ ] CDL brief parameters resolved from `.tidyfactor/marketing-brief.md` or prompt defaults
|
|
60
|
+
- [ ] At least 3 distinct psychological ad copy angles produced
|
|
61
|
+
- [ ] Zero banned marketing clichés present (verified against `../memory/quality-bar.md`)
|
|
62
|
+
- [ ] Google RSA includes 15 unique headlines and 4 descriptions matching character caps
|
|
63
|
+
- [ ] Landing page messaging covers all 8 wireframe sections and passes the 5-second clarity test
|
|
64
|
+
- [ ] Concrete campaign testing budget and scaling/kill thresholds defined
|
|
65
|
+
- [ ] Ad copy and landing page headlines share matching messaging to prevent bounce
|
|
66
|
+
- [ ] 7-Axis Quality Stamp included with scores >= 4/5
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Workflow: promo-conversion
|
|
2
|
+
|
|
3
|
+
One outcome: A profitable seasonal or flash sale plan, Decoy Effect pricing structure, a viral contest/giveaway architecture, or a margin-safe discount and coupon strategy.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Execution Steps
|
|
8
|
+
|
|
9
|
+
### 0. CDL Marketing Brief Resolution
|
|
10
|
+
1. Check `.tidyfactor/marketing-brief.md`. If present, adopt established target market (M1), voice archetype (M2), and conversion model (M4).
|
|
11
|
+
2. If absent and user prompt contains ambiguous parameters, run thin arbitration from `../memory/decision-points.md` (single-round batching, max 3 questions).
|
|
12
|
+
3. If skip conditions apply, proceed immediately with conservative defaults.
|
|
13
|
+
|
|
14
|
+
### 1. Margin Safeguard & Discount Math
|
|
15
|
+
Using `../memory/promotions-math.md`:
|
|
16
|
+
- Input Product Price ($) and Unit Cost / COGS ($) to determine Gross Margin %.
|
|
17
|
+
- Calculate the maximum allowable discount that maintains positive net contribution.
|
|
18
|
+
- If margin is < 40%, route away from flat percentage discounts to **Threshold Bundling** (e.g. "Spend $100 Get $15") or **Value-Add Free Bonuses**.
|
|
19
|
+
|
|
20
|
+
### 2. Pricing Architecture & Psychological Anchoring
|
|
21
|
+
Using `../memory/frameworks.md`:
|
|
22
|
+
- Structure 3-Tier Good/Better/Best pricing table.
|
|
23
|
+
- Implement the **Decoy Effect**: Position the middle tier as the irresistible target by making the lower tier slightly less attractive and the top tier the high-anchor enterprise tier.
|
|
24
|
+
- Frame annual billing with a 15-20% discount ("Get 2 Months Free").
|
|
25
|
+
- If MENA market: Add localized BNPL installment messaging ("Split into 4 interest-free payments of X SAR/AED with Tabby/Tamara").
|
|
26
|
+
|
|
27
|
+
### 3. 72-Hour Flash Sale & Seasonal Promotion Execution Plan
|
|
28
|
+
Structure the promotional timeline:
|
|
29
|
+
- **T-3 Days (Pre-Announcement Teaser)**: VIP early-access signup with exclusive bonus for first 50 buyers.
|
|
30
|
+
- **Day 1 (Hour 0 - Launch Blitz)**: Main launch email broadcast + top banner on website + retargeting ad surge.
|
|
31
|
+
- **Day 2 (Hour 24 - Momentum & FAQs)**: Social proof highlights + answers to common questions.
|
|
32
|
+
- **Day 3 (Hour 48 - Last Chance / Hard Close)**: 3-part urgency email cadence (Morning, Afternoon, 2-Hours-Left) + countdown timer banner.
|
|
33
|
+
|
|
34
|
+
### 4. Viral Giveaway & Contest Architecture
|
|
35
|
+
Design a high-ROI contest:
|
|
36
|
+
- **Niche-Specific Prize**: Value proposition tailored exclusively to ideal customers (not generic electronics/cash).
|
|
37
|
+
- **Entry Funnel**: Verified email signup (1 entry) -> Redirect to Thank-You Page with unique viral referral link.
|
|
38
|
+
- **Viral Gamification**: +5 entries per friend who joins through referral link.
|
|
39
|
+
- **Non-Winner Conversion Offer**: On announcement day, deliver a surprise 48-hour voucher to all non-winning participants.
|
|
40
|
+
|
|
41
|
+
### 5. Pre-Emit Quality Self-Critique
|
|
42
|
+
Before emitting pricing, promotions, or sale mechanics, evaluate against all 7 axes from `../memory/quality-bar.md` and stamp:
|
|
43
|
+
```markdown
|
|
44
|
+
/* Pre-emit critique: P5 H5 E5 S5 R5 V5 D5 */
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Validation Checklist
|
|
50
|
+
|
|
51
|
+
- [ ] CDL brief parameters resolved from `.tidyfactor/marketing-brief.md` or prompt defaults
|
|
52
|
+
- [ ] Discount structure verified against gross margins to prevent profit erosion
|
|
53
|
+
- [ ] Decoy Effect and price anchoring applied to 3-tier pricing setups
|
|
54
|
+
- [ ] 72-hour promotional calendar contains hourly triggers for email, web banners, and ads
|
|
55
|
+
- [ ] Giveaway prize is strictly relevant to dream customer avatar
|
|
56
|
+
- [ ] Non-winner consolation offer included in contest design
|
|
57
|
+
- [ ] Expiration deadlines and urgency mechanisms are explicit and realistic
|
|
58
|
+
- [ ] 7-Axis Quality Stamp included with scores >= 4/5
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Workflow: social-growth
|
|
2
|
+
|
|
3
|
+
One outcome: A comprehensive social media audit, a tactical 0-to-1,000 follower roadmap, platform-specific growth playbooks (Instagram, TikTok, LinkedIn B2B), or targeted hashtag architecture.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Execution Steps
|
|
8
|
+
|
|
9
|
+
### 0. CDL Marketing Brief Resolution
|
|
10
|
+
1. Check `.tidyfactor/marketing-brief.md`. If present, adopt established target market (M1), voice archetype (M2), and funnel stage (M3).
|
|
11
|
+
2. If absent and user prompt contains ambiguous parameters, run thin arbitration from `../memory/decision-points.md` (single-round batching, max 3 questions).
|
|
12
|
+
3. If skip conditions apply, proceed immediately with conservative defaults.
|
|
13
|
+
|
|
14
|
+
### 1. Social Profile Audit & Conversion Architecture
|
|
15
|
+
Audit the profile against conversion anchors:
|
|
16
|
+
- **Handle & Name Field**: Contains primary searchable keywords (e.g. `@name | Next.js & SaaS Marketing`).
|
|
17
|
+
- **Bio Formula (3 Lines)**:
|
|
18
|
+
- *Line 1 (Target & Result)*: Who you help + transformation delivered.
|
|
19
|
+
- *Line 2 (Authority & Proof)*: Key metric, credential, or recognizable client.
|
|
20
|
+
- *Line 3 (Lead Magnet CTA)*: Clear arrow pointing to link in bio.
|
|
21
|
+
- **Link in Bio**: Single primary destination or cleanly organized hub.
|
|
22
|
+
- **Story Highlights / Pinned Posts**: 3 pinned anchors: (1) Origin Story, (2) Case Study / Proof, (3) Core Offer.
|
|
23
|
+
|
|
24
|
+
### 2. The 0-to-1,000 Follower Sprint (60-Day Action Plan)
|
|
25
|
+
Break down the cold-start playbook without ad spend:
|
|
26
|
+
- **Outbound Value Engagement (The $1.80 Strategy)**: Leave 10 insightful, high-value comments daily on top 10 creator accounts in your niche.
|
|
27
|
+
- **Collaborative Flywheels**: Co-authoring carousel posts, podcast appearances, and live streams with peers at similar audience sizes (500-2,000 followers).
|
|
28
|
+
- **Algorithmic Asset Ratio**: 70% short-form video (Reels/TikTok) for non-follower discovery + 30% carousels/stories for follower retention and conversion.
|
|
29
|
+
|
|
30
|
+
### 3. LinkedIn B2B & Founder Personal Branding Playbook
|
|
31
|
+
Using `../memory/platform-specs.md` and `../memory/lifecycle-flows.md`:
|
|
32
|
+
- **Personal vs Company Page Split**: Position founder profile as the primary thought-leadership engine; use company page for verification, hiring, and ad retargeting.
|
|
33
|
+
- **4 B2B Post Types**: Draft POV opinion posts, teardowns of client transformations, behind-the-build lessons, and tactical engagement questions.
|
|
34
|
+
- **3-Touch Outbound InMail / DM Sequence**: Execute value-first connection request -> relevant social proof -> graceful soft CTA.
|
|
35
|
+
|
|
36
|
+
### 4. Instagram & TikTok Growth Playbook
|
|
37
|
+
Using `../memory/platform-specs.md`:
|
|
38
|
+
- Script **5 Short-Form Video Hooks** with on-screen visual directions and pacing cues.
|
|
39
|
+
- Define posting frequency and best times to publish.
|
|
40
|
+
- Outline daily Story engagement sequence (Poll -> Question Box -> Behind-the-scenes -> Offer CTA).
|
|
41
|
+
|
|
42
|
+
### 5. Hashtag & Search Keyword Taxonomy
|
|
43
|
+
Generate a tiered hashtag block using the 3-Tier Rule:
|
|
44
|
+
- 2 Broad Tier (Category scale)
|
|
45
|
+
- 4 Niche Tier (Community focus)
|
|
46
|
+
- 2 Micro / Branded Tier
|
|
47
|
+
|
|
48
|
+
### 6. Pre-Emit Quality Self-Critique
|
|
49
|
+
Before emitting social media playbooks or profile copy, evaluate against all 7 axes from `../memory/quality-bar.md` and stamp:
|
|
50
|
+
```markdown
|
|
51
|
+
/* Pre-emit critique: P5 H5 E5 S5 R5 V5 D5 */
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Validation Checklist
|
|
57
|
+
|
|
58
|
+
- [ ] CDL brief parameters resolved from `.tidyfactor/marketing-brief.md` or prompt defaults
|
|
59
|
+
- [ ] Bio is optimized with clear target, authority proof, and single action CTA
|
|
60
|
+
- [ ] Pinned content / highlights strategy covers About, Proof, and Offer
|
|
61
|
+
- [ ] 0-to-1k plan includes daily outbound actions, not just passive posting
|
|
62
|
+
- [ ] If B2B LinkedIn: Founder personal branding strategy and 3-touch outreach sequence defined
|
|
63
|
+
- [ ] Short-form video scripts include visual hook direction in first 3 seconds
|
|
64
|
+
- [ ] Hashtags adhere strictly to the 3-tier distribution rule (5-10 tags max)
|
|
65
|
+
- [ ] 7-Axis Quality Stamp included with scores >= 4/5
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Workflow: viral-retention
|
|
2
|
+
|
|
3
|
+
One outcome: A complete customer retention diagnosis, loyalty program design (points/tiers/perks), 2-sided customer referral program, influencer outreach campaign, or brand awareness distribution engine.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Execution Steps
|
|
8
|
+
|
|
9
|
+
### 0. CDL Marketing Brief Resolution
|
|
10
|
+
1. Check `.tidyfactor/marketing-brief.md`. If present, adopt established target market (M1), voice archetype (M2), and conversion model (M4).
|
|
11
|
+
2. If absent and user prompt contains ambiguous parameters, run thin arbitration from `../memory/decision-points.md` (single-round batching, max 3 questions).
|
|
12
|
+
3. If skip conditions apply, proceed immediately with conservative defaults.
|
|
13
|
+
|
|
14
|
+
### 1. Customer Retention & Drop-Off Diagnosis
|
|
15
|
+
Diagnose retention friction before designing loyalty incentives:
|
|
16
|
+
- **SaaS / Subscription**: Diagnose time-to-first-value (onboarding "aha moment"), feature adoption drop-offs, and pre-renewal disengagement signals.
|
|
17
|
+
- **E-Commerce / Retail**: Identify post-first-purchase drop-offs, lack of re-order triggers, and competitor price sensitivity.
|
|
18
|
+
- **Service Businesses**: Address post-project check-in cadence, retainer transitions, and client relationship health.
|
|
19
|
+
|
|
20
|
+
### 2. Loyalty Program Architecture (Matching Business Model)
|
|
21
|
+
Select the optimal loyalty model:
|
|
22
|
+
- **Points / Rewards**: For high-frequency, low-AOV purchases (retail, food, consumable goods).
|
|
23
|
+
- **Tiered Status**: For businesses with a clear VIP heavy-user segment (Bronze / Silver / Gold).
|
|
24
|
+
- **Perks-Based (No-Points)**: For early-stage brands and boutique SaaS (exclusive early access, free priority support/shipping, private community).
|
|
25
|
+
- **Cashback / Store Credit**: Cleanest, lowest friction for general digital stores.
|
|
26
|
+
|
|
27
|
+
### 3. Two-Sided Viral Referral Program Architecture
|
|
28
|
+
Structure a self-sustaining referral loop:
|
|
29
|
+
- **Incentive Structure (Give $X, Get $Y)**:
|
|
30
|
+
- *Inviter Reward*: $20 store credit / 1 free month / cash payout after referred friend's first purchase.
|
|
31
|
+
- *Invitee Reward*: 15% discount on their first order / extended 30-day trial.
|
|
32
|
+
- **Trigger Touchpoints**: Post-purchase thank you page, positive NPS survey email (+7 to +14 days), inside user account dashboard.
|
|
33
|
+
- **Gamified Milestones**: Unlock bonus tier rewards at 3, 5, and 10 successful referrals.
|
|
34
|
+
|
|
35
|
+
### 4. Influencer Vetting & Cold Outreach Campaign
|
|
36
|
+
Structure an influencer partnership pipeline:
|
|
37
|
+
- **Vetting Criteria Scorecard**: Engagement Rate > 3.0%, comment authenticity, audience demographic alignment.
|
|
38
|
+
- **Outreach Scripts (DM & Email)**: Personalized compliment on recent post + 1-sentence value proposition + zero-friction initial ask (gifting/sample).
|
|
39
|
+
- **Compensation & Tracking**: Dedicated discount code (e.g. `INFLUENCER10`) + UTM tracking link.
|
|
40
|
+
|
|
41
|
+
### 5. Brand Awareness & Organic Distribution Engine
|
|
42
|
+
- **Podcast & Media Pitching**: 3 contrarian angles showcasing unique case studies.
|
|
43
|
+
- **Co-Marketing**: Joint webinars, bundle drops, or newsletter swaps with complementary non-competing brands.
|
|
44
|
+
- **Content Repurposing Flywheel**: 1 core long-form asset -> 5 short-form clips + 3 text posts + 1 newsletter.
|
|
45
|
+
|
|
46
|
+
### 6. Pre-Emit Quality Self-Critique
|
|
47
|
+
Before emitting loyalty programs, referral systems, or outreach scripts, evaluate against all 7 axes from `../memory/quality-bar.md` and stamp:
|
|
48
|
+
```markdown
|
|
49
|
+
/* Pre-emit critique: P5 H5 E5 S5 R5 V5 D5 */
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Validation Checklist
|
|
55
|
+
|
|
56
|
+
- [ ] CDL brief parameters resolved from `.tidyfactor/marketing-brief.md` or prompt defaults
|
|
57
|
+
- [ ] Retention drop-off point diagnosed before prescribing loyalty mechanics
|
|
58
|
+
- [ ] Loyalty model explicitly matches business model (Points vs Tiers vs Perks)
|
|
59
|
+
- [ ] Referral loop defines concrete incentives for both the referrer and the new referee
|
|
60
|
+
- [ ] Referral placement points mapped across customer journey (post-purchase, email, app dashboard)
|
|
61
|
+
- [ ] Influencer vetting scorecard includes quantitative engagement and audience authenticity checks
|
|
62
|
+
- [ ] Tracking mechanisms (UTMs, custom affiliate promo codes) defined for attribution
|
|
63
|
+
- [ ] 7-Axis Quality Stamp included with scores >= 4/5
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* build-skill.js — packages the distributable Claude Skill (.skill file)
|
|
4
|
+
* for tidyfactor-marketing from the repo's single source of truth,
|
|
5
|
+
* and synchronizes across all target agent locations.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const fs = require("fs");
|
|
9
|
+
const path = require("path");
|
|
10
|
+
const { execFileSync, spawnSync } = require("child_process");
|
|
11
|
+
|
|
12
|
+
const ROOT = path.resolve(__dirname, "..");
|
|
13
|
+
const SKILL_NAME = "tidyfactor-marketing";
|
|
14
|
+
const DIST_DIR = path.join(ROOT, "dist");
|
|
15
|
+
const STAGE_DIR = path.join(DIST_DIR, SKILL_NAME);
|
|
16
|
+
|
|
17
|
+
const HOME = process.env.USERPROFILE || process.env.HOME;
|
|
18
|
+
const AGENTS_SKILL = path.resolve(ROOT, "..", ".agents", "skills", SKILL_NAME);
|
|
19
|
+
const GLOBAL_CONFIG_SKILL = path.join(HOME, ".gemini", "config", "skills", SKILL_NAME);
|
|
20
|
+
|
|
21
|
+
const args = process.argv.slice(2);
|
|
22
|
+
const outFlagIdx = args.indexOf("--out");
|
|
23
|
+
const OUT_FILE =
|
|
24
|
+
outFlagIdx !== -1 && args[outFlagIdx + 1]
|
|
25
|
+
? path.resolve(ROOT, args[outFlagIdx + 1])
|
|
26
|
+
: path.join(DIST_DIR, `${SKILL_NAME}.skill`);
|
|
27
|
+
|
|
28
|
+
const ROOT_COPIES = [
|
|
29
|
+
"SKILL.md",
|
|
30
|
+
"references",
|
|
31
|
+
"tools",
|
|
32
|
+
"bin",
|
|
33
|
+
"assets",
|
|
34
|
+
"brand.json",
|
|
35
|
+
".tidyfactor",
|
|
36
|
+
"package.json",
|
|
37
|
+
"AGENTS.md",
|
|
38
|
+
"README.md",
|
|
39
|
+
"README.ar.md",
|
|
40
|
+
"README.fa.md",
|
|
41
|
+
"README.es.md",
|
|
42
|
+
"README.pt.md",
|
|
43
|
+
"README.zh.md",
|
|
44
|
+
"README.de.md",
|
|
45
|
+
"README.fr.md",
|
|
46
|
+
"LICENSE",
|
|
47
|
+
"CHANGELOG.md",
|
|
48
|
+
];
|
|
49
|
+
|
|
50
|
+
const EXCLUDED_PATTERNS = [
|
|
51
|
+
/__pycache__/,
|
|
52
|
+
/\.pyc$/,
|
|
53
|
+
/\.DS_Store$/,
|
|
54
|
+
/Thumbs\.db$/,
|
|
55
|
+
/\.git/,
|
|
56
|
+
];
|
|
57
|
+
|
|
58
|
+
function log(msg) {
|
|
59
|
+
console.log(`[build-skill] ${msg}`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function rmrf(p) {
|
|
63
|
+
if (fs.existsSync(p)) fs.rmSync(p, { recursive: true, force: true });
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function shouldExclude(filePath) {
|
|
67
|
+
return EXCLUDED_PATTERNS.some((pattern) => pattern.test(filePath));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function copyFiltered(src, dest) {
|
|
71
|
+
if (!fs.existsSync(src)) return;
|
|
72
|
+
const stat = fs.statSync(src);
|
|
73
|
+
if (stat.isDirectory()) {
|
|
74
|
+
if (shouldExclude(src)) return;
|
|
75
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
76
|
+
for (const file of fs.readdirSync(src)) {
|
|
77
|
+
copyFiltered(path.join(src, file), path.join(dest, file));
|
|
78
|
+
}
|
|
79
|
+
} else {
|
|
80
|
+
if (shouldExclude(src)) return;
|
|
81
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
82
|
+
fs.copyFileSync(src, dest);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function zipArchive(stagePath, outFile, cwdDir) {
|
|
87
|
+
log("zipping Claude skill archive...");
|
|
88
|
+
if (fs.existsSync(outFile)) fs.rmSync(outFile);
|
|
89
|
+
|
|
90
|
+
const stageBasename = path.basename(stagePath);
|
|
91
|
+
|
|
92
|
+
// 1. Try native zip
|
|
93
|
+
try {
|
|
94
|
+
execFileSync("zip", ["-r", "-q", outFile, stageBasename], {
|
|
95
|
+
cwd: cwdDir,
|
|
96
|
+
stdio: "inherit",
|
|
97
|
+
});
|
|
98
|
+
return;
|
|
99
|
+
} catch (err) {}
|
|
100
|
+
|
|
101
|
+
// 2. Try Python built-in zipfile module
|
|
102
|
+
try {
|
|
103
|
+
const pythonCmd = process.platform === "win32" ? "python" : "python3";
|
|
104
|
+
execFileSync(pythonCmd, ["-m", "zipfile", "-c", outFile, stageBasename], {
|
|
105
|
+
cwd: cwdDir,
|
|
106
|
+
stdio: "inherit",
|
|
107
|
+
});
|
|
108
|
+
return;
|
|
109
|
+
} catch (pyErr) {}
|
|
110
|
+
|
|
111
|
+
// 3. Try PowerShell Compress-Archive
|
|
112
|
+
try {
|
|
113
|
+
const tmpZip = outFile.replace(/\.(skill|zip)$/, ".zip");
|
|
114
|
+
if (fs.existsSync(tmpZip)) fs.rmSync(tmpZip);
|
|
115
|
+
const result = spawnSync(
|
|
116
|
+
"powershell",
|
|
117
|
+
[
|
|
118
|
+
"-NoProfile",
|
|
119
|
+
"-NonInteractive",
|
|
120
|
+
"-Command",
|
|
121
|
+
`Compress-Archive -Path "${stagePath}" -DestinationPath "${tmpZip}" -Force`,
|
|
122
|
+
],
|
|
123
|
+
{ stdio: "inherit" }
|
|
124
|
+
);
|
|
125
|
+
if (result.status === 0) {
|
|
126
|
+
if (tmpZip !== outFile) {
|
|
127
|
+
fs.renameSync(tmpZip, outFile);
|
|
128
|
+
}
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
} catch (winErr) {}
|
|
132
|
+
|
|
133
|
+
throw new Error("Failed to create zip archive via zip, Python, or PowerShell.");
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function syncToTargetLocation(targetDir) {
|
|
137
|
+
log(`synchronizing to target location: ${targetDir}`);
|
|
138
|
+
rmrf(targetDir);
|
|
139
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
140
|
+
for (const item of ROOT_COPIES) {
|
|
141
|
+
const src = path.join(ROOT, item);
|
|
142
|
+
const dest = path.join(targetDir, item);
|
|
143
|
+
if (fs.existsSync(src)) {
|
|
144
|
+
copyFiltered(src, dest);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function runIntegrityValidation() {
|
|
150
|
+
log("running release validation checks...");
|
|
151
|
+
const validatorScript = path.join(ROOT, "tools", "validate_skill.py");
|
|
152
|
+
if (fs.existsSync(validatorScript)) {
|
|
153
|
+
const pythonCmd = process.platform === "win32" ? "python" : "python3";
|
|
154
|
+
const res = spawnSync(pythonCmd, [validatorScript], { stdio: "inherit" });
|
|
155
|
+
if (res.status !== 0) {
|
|
156
|
+
throw new Error("Validation checks failed. Build aborted.");
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function main() {
|
|
162
|
+
log(`repo root: ${ROOT}`);
|
|
163
|
+
|
|
164
|
+
// 1. Run Pre-Build Validation
|
|
165
|
+
runIntegrityValidation();
|
|
166
|
+
|
|
167
|
+
log("cleaning previous build...");
|
|
168
|
+
rmrf(STAGE_DIR);
|
|
169
|
+
fs.mkdirSync(STAGE_DIR, { recursive: true });
|
|
170
|
+
|
|
171
|
+
log("staging single-source-of-truth files from repo root (filtered)...");
|
|
172
|
+
for (const name of ROOT_COPIES) {
|
|
173
|
+
const src = path.join(ROOT, name);
|
|
174
|
+
const dest = path.join(STAGE_DIR, name);
|
|
175
|
+
copyFiltered(src, dest);
|
|
176
|
+
log(` + ${name}`);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(ROOT, "package.json"), "utf8"));
|
|
180
|
+
const versionedOutFile = path.join(DIST_DIR, `${SKILL_NAME}-v${pkg.version}.skill`);
|
|
181
|
+
|
|
182
|
+
fs.mkdirSync(path.dirname(OUT_FILE), { recursive: true });
|
|
183
|
+
zipArchive(STAGE_DIR, OUT_FILE, DIST_DIR);
|
|
184
|
+
fs.copyFileSync(OUT_FILE, versionedOutFile);
|
|
185
|
+
|
|
186
|
+
const sizeKb = (fs.statSync(OUT_FILE).size / 1024).toFixed(1);
|
|
187
|
+
log(`done → ${path.relative(ROOT, OUT_FILE)} (${sizeKb} KB)`);
|
|
188
|
+
log(`✓ Created versioned archive → ${path.relative(ROOT, versionedOutFile)}`);
|
|
189
|
+
|
|
190
|
+
// Auto-sync to Skills-LAB root if located inside Skills-LAB
|
|
191
|
+
const skillLabRoot = path.resolve(ROOT, "..");
|
|
192
|
+
if (path.basename(skillLabRoot) === "Skills-LAB") {
|
|
193
|
+
const skillLabTarget = path.join(skillLabRoot, `${SKILL_NAME}.skill`);
|
|
194
|
+
const skillLabVersionedTarget = path.join(skillLabRoot, `${SKILL_NAME}-v${pkg.version}.skill`);
|
|
195
|
+
fs.copyFileSync(OUT_FILE, skillLabTarget);
|
|
196
|
+
fs.copyFileSync(OUT_FILE, skillLabVersionedTarget);
|
|
197
|
+
log(`✓ Updated Skills-LAB root archives → ${SKILL_NAME}.skill & ${SKILL_NAME}-v${pkg.version}.skill`);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// Cross-Agent Synchronization
|
|
201
|
+
syncToTargetLocation(AGENTS_SKILL);
|
|
202
|
+
syncToTargetLocation(GLOBAL_CONFIG_SKILL);
|
|
203
|
+
log(`✓ Completed 4-way cross-agent synchronization across all target locations.`);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
main();
|