@easysociable/cli 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -18
- package/content-engine/fixtures/golden-run-en/draft.md +13 -0
- package/content-engine/fixtures/golden-run-en/idea.md +26 -0
- package/content-engine/fixtures/golden-run-en/pack-tiktok.json +11 -0
- package/content-engine/scripts/contracts.mjs +183 -0
- package/content-engine/scripts/export-contracts.mjs +76 -0
- package/content-engine/scripts/fixture.test.mjs +24 -0
- package/content-engine/scripts/starter.mjs +55 -0
- package/content-engine/scripts/validate-export.mjs +42 -0
- package/content-engine/scripts/validate-pack.mjs +48 -0
- package/content-engine/scripts/validate-run.mjs +100 -0
- package/content-engine/scripts/validate.test.mjs +101 -0
- package/content-engine/scripts/workbench.mjs +135 -0
- package/content-engine/starter/CLAUDE.md +756 -0
- package/content-engine/starter/accounts/README.md +9 -0
- package/content-engine/starter/accounts/_index.md +31 -0
- package/content-engine/starter/accounts/overrides/README.md +3 -0
- package/content-engine/starter/discovery/README.md +18 -0
- package/content-engine/starter/discovery/_index.md +27 -0
- package/content-engine/starter/discovery/_template.md +41 -0
- package/content-engine/starter/engine.json +19 -0
- package/content-engine/starter/exports/README.md +28 -0
- package/content-engine/starter/inbox/README.md +9 -0
- package/content-engine/starter/inbox/_index.md +24 -0
- package/content-engine/starter/inbox/entries/README.md +3 -0
- package/content-engine/starter/platforms/README.md +19 -0
- package/content-engine/starter/platforms/ig.md +69 -0
- package/content-engine/starter/platforms/instagram.md +5 -0
- package/content-engine/starter/platforms/linkedin.md +72 -0
- package/content-engine/starter/platforms/threads.md +69 -0
- package/content-engine/starter/platforms/tiktok.md +71 -0
- package/content-engine/starter/platforms/x.md +78 -0
- package/content-engine/starter/platforms/xiaohongshu.md +19 -0
- package/content-engine/starter/profiles/_index.md +13 -0
- package/content-engine/starter/profiles/default/README.md +11 -0
- package/content-engine/starter/profiles/default/audience.md +38 -0
- package/content-engine/starter/profiles/default/pillars.md +33 -0
- package/content-engine/starter/profiles/default/voice.md +24 -0
- package/content-engine/starter/published/_index.md +20 -0
- package/content-engine/starter/raw/README.md +4 -0
- package/content-engine/starter/raw/_index.md +12 -0
- package/content-engine/starter/runs/README.md +22 -0
- package/content-engine/starter/runs/_index.md +41 -0
- package/content-engine/starter/runs/_template/brief.md +66 -0
- package/content-engine/starter/runs/_template/draft.md +11 -0
- package/content-engine/starter/runs/_template/editor.md +18 -0
- package/content-engine/starter/runs/_template/feedback.md +15 -0
- package/content-engine/starter/runs/_template/idea.md +27 -0
- package/content-engine/starter/runs/_template/pack.md +47 -0
- package/content-engine/starter/runs/_template/packet.md +25 -0
- package/content-engine/starter/runs/_template/rubric.md +19 -0
- package/content-engine/starter/swipe/_index.md +27 -0
- package/content-engine/starter/swipe/_template.md +34 -0
- package/content-engine/starter/topics/README.md +25 -0
- package/content-engine/starter/topics/WATCHLIST.md +65 -0
- package/content-engine/starter/topics/_index.md +44 -0
- package/content-engine/starter/topics/_template-item.md +90 -0
- package/content-engine/starter/topics/items/README.md +4 -0
- package/content-engine/starter/topics/scoring.md +201 -0
- package/content-engine/starter/topics/watchlists/README.md +10 -0
- package/content-engine/starter/topics/watchlists/_shared.md +14 -0
- package/content-engine/starter/topics/watchlists/default.md +6 -0
- package/content-engine/starter/wiki/README.md +13 -0
- package/content-engine/starter/wiki/atoms/_index.md +23 -0
- package/content-engine/starter/wiki/atoms/_template.md +31 -0
- package/content-engine/starter/wiki/claims/_index.md +26 -0
- package/content-engine/starter/wiki/claims/_template.md +38 -0
- package/content-engine/starter/workbench/README.md +17 -0
- package/content-engine/workbench/build.py +1074 -0
- package/content-engine/workbench/serve.py +53 -0
- package/content-engine/workbench/template.html +2119 -0
- package/dist/easysociable.js +804 -2903
- package/dist/easysociable.js.map +1 -1
- package/package.json +19 -13
- package/skills/ONBOARDING.md +20 -14
- package/skills/easysociable-content/SKILL.md +38 -102
- package/skills/easysociable-slideshow/SKILL.md +24 -16
- package/skills/easysociable-slideshow/references/VAULT.md +13 -11
- package/skills/easysociable-template/SKILL.md +26 -24
- package/skills/easysociable-template/references/CATALOG_METADATA.md +2 -2
- package/skills/easysociable-template/references/DESIGN_V2_1.md +53 -2
- package/skills/easysociable-template/references/GATEWAY.md +7 -2
- package/skills/easysociable-template/references/PLATFORM_SPECS.md +11 -3
- package/skills/easysociable-template/references/THEME_TOKENS.md +1 -1
- package/skills/easysociable-template/references/fixtures/image-reference.design-plan.json +74 -0
- package/skills/easysociable-template/references/fixtures/image-reference.visual-qa.json +28 -0
- package/skills/easysociable-template/scripts/generate-theme-from-hex.mjs +0 -0
- package/skills/easysociable-template/scripts/validate-design-v2.mjs +97 -0
- package/skills/easysociable-template/workflows/ASSET_PLAN.md +2 -1
- package/skills/easysociable-template/workflows/AUTHORING_FROM_BRIEF.md +4 -4
- package/skills/easysociable-template/workflows/AUTHORING_FROM_IMAGE.md +66 -16
- package/skills/easysociable-template/workflows/AUTHORING_STUDIO.md +28 -15
- package/skills/easysociable-template/workflows/DESIGN_BRIEF.md +4 -3
- package/skills/easysociable-template/workflows/MULTI_PLATFORM_FAMILY.md +81 -0
- package/skills/easysociable-template/workflows/PUBLISH_FROM_DRAFT.md +1 -1
- package/skills/easysociable-template/workflows/VISUAL_QA.md +10 -0
- package/skills/easysociable-content/platforms/claude.md +0 -5
- package/skills/easysociable-content/platforms/codex.md +0 -5
- package/skills/easysociable-content/platforms/hermes.md +0 -5
- package/skills/easysociable-content/platforms/openclaw.md +0 -5
- package/skills/easysociable-content/references/CLI.md +0 -27
- package/skills/easysociable-content/references/MCP.md +0 -20
- package/skills/easysociable-content/references/PAGE_PACK.md +0 -6
- package/skills/easysociable-content/references/TROUBLESHOOTING.md +0 -11
- package/skills/easysociable-content/references/VAULT.md +0 -20
- package/skills/easysociable-content/scripts/setup.mjs +0 -156
- package/skills/easysociable-content/scripts/setup.test.mjs +0 -71
- package/skills/easysociable-content/scripts/starter.mjs +0 -53
- package/skills/easysociable-content/workflows/ANALYSIS_AND_COVERAGE.md +0 -8
- package/skills/easysociable-content/workflows/CONTENT_EXPORT.md +0 -19
- package/skills/easysociable-content/workflows/DEVICE_TASKS.md +0 -5
- package/skills/easysociable-content/workflows/EXPERIMENTS.md +0 -6
- package/skills/easysociable-content/workflows/MCP_FIRST.md +0 -10
- package/skills/easysociable-content/workflows/PUBLICATION.md +0 -5
- package/skills/easysociable-content/workflows/TOPIC_DRAFT.md +0 -5
- package/skills/easysociable-content/workflows/WORKING_DRAFT.md +0 -10
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: T-YYYYMMDD-XX
|
|
3
|
+
date: YYYY-MM-DD
|
|
4
|
+
status: scored
|
|
5
|
+
account: your-handle
|
|
6
|
+
profile: default
|
|
7
|
+
platform: x
|
|
8
|
+
pillar: P1
|
|
9
|
+
source_type: watchlist | inbox | user | discovery
|
|
10
|
+
purpose: produce | library | discard
|
|
11
|
+
scout_label: demand | ally | foil | craft_only
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Opportunity
|
|
15
|
+
|
|
16
|
+
One sentence — what's the content opportunity, not a title.
|
|
17
|
+
|
|
18
|
+
## Source
|
|
19
|
+
|
|
20
|
+
- **type:** watchlist | inbox | user | discovery
|
|
21
|
+
- **url:**
|
|
22
|
+
- **handle:**
|
|
23
|
+
- **discovery_id:** (only if promoted from D-…; else empty)
|
|
24
|
+
- **capture_id:** (only if linked to inbox; else empty)
|
|
25
|
+
- **raw:** (only if exists)
|
|
26
|
+
- **engagement snapshot:** likes / replies / bookmarks / views @ time
|
|
27
|
+
|
|
28
|
+
## Scout
|
|
29
|
+
|
|
30
|
+
- **purpose:** produce | library
|
|
31
|
+
- **scout_label:** demand | ally | foil | craft_only
|
|
32
|
+
- **scout_note:** (one line — why not discard)
|
|
33
|
+
|
|
34
|
+
## Context
|
|
35
|
+
|
|
36
|
+
- **what_changed:**
|
|
37
|
+
- **why_now:**
|
|
38
|
+
|
|
39
|
+
## Audience
|
|
40
|
+
|
|
41
|
+
- **who:**
|
|
42
|
+
- **current_belief:**
|
|
43
|
+
- **icp_checks:** (pain / buyer shape / wedge — note which hit, from profile)
|
|
44
|
+
|
|
45
|
+
## Conflict
|
|
46
|
+
|
|
47
|
+
- **old_model:**
|
|
48
|
+
- **new_reality:**
|
|
49
|
+
- **belief_gap:**
|
|
50
|
+
|
|
51
|
+
## Insight
|
|
52
|
+
|
|
53
|
+
- **potential_insight:**
|
|
54
|
+
- **why_nonobvious:**
|
|
55
|
+
|
|
56
|
+
## Evidence
|
|
57
|
+
|
|
58
|
+
- **available:**
|
|
59
|
+
- **type:** data | example | case | mechanism | expert | observation
|
|
60
|
+
- **gaps:**
|
|
61
|
+
|
|
62
|
+
## Score (opportunity)
|
|
63
|
+
|
|
64
|
+
| dim | score 0-10 | note |
|
|
65
|
+
|-----|------------|------|
|
|
66
|
+
| context | | |
|
|
67
|
+
| audience | | |
|
|
68
|
+
| conflict | | |
|
|
69
|
+
| insight | | |
|
|
70
|
+
| evidence | | |
|
|
71
|
+
|
|
72
|
+
**opp_score:** (weighted per `topics/scoring.md`)
|
|
73
|
+
**audience_floor:** (hard check ≥ 6)
|
|
74
|
+
|
|
75
|
+
## Profile fit
|
|
76
|
+
|
|
77
|
+
- pillars:
|
|
78
|
+
- audience_pain:
|
|
79
|
+
- risk:
|
|
80
|
+
|
|
81
|
+
## Suggested production (optional, not binding)
|
|
82
|
+
|
|
83
|
+
- swipe: none | S…
|
|
84
|
+
- atoms: none | …
|
|
85
|
+
- claim: none | C…
|
|
86
|
+
|
|
87
|
+
## Decision
|
|
88
|
+
|
|
89
|
+
- next: open_run | hold | kill | library_ingest | research_evidence
|
|
90
|
+
- run_id: (filled when promoted)
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Topic scoring — Opportunity evaluation
|
|
2
|
+
|
|
3
|
+
Stable rules for evaluating **Content Opportunities** for the active profile.
|
|
4
|
+
Scores whether a topic **deserves to exist as content**, not whether it can be written well.
|
|
5
|
+
|
|
6
|
+
**Principle:** Don't generate content from topics. Generate content from validated opportunities.
|
|
7
|
+
|
|
8
|
+
**Goal of a `ready` opportunity:** worth opening a run that speaks to the readers and pains in
|
|
9
|
+
`profiles/<id>/audience.md` and `pillars.md`, and can land the account’s product/wedge honestly
|
|
10
|
+
(not empty consensus, not hard sell).
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Pipeline (do not skip)
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
watchlist / inbox / url / discovery signal
|
|
18
|
+
→ 0) Hard filters
|
|
19
|
+
→ 1) Scout gate (purpose + label) ← most signals die here
|
|
20
|
+
→ 2) Opportunity five-dim score ← only for produce candidates
|
|
21
|
+
→ 3) Verdict (opp_score + audience floor)
|
|
22
|
+
→ 4) Among ready only: sort by src_*
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Library-only signals may skip (2)–(3) — see Scout purposes below.
|
|
26
|
+
|
|
27
|
+
Watchlist scans create **Discovery** records first. Topic scoring runs only after the user explicitly promotes a Discovery (or names another explicit input).
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 0) Hard filters (fail → do not create topic, or `parked`)
|
|
32
|
+
|
|
33
|
+
- Off **profile pillars** (unless user override)
|
|
34
|
+
- Hits audience **Not for** (F4F, pure crypto shill, comment-gate junk as the only substance, etc.)
|
|
35
|
+
- Requires invented personal metrics/experience to write honestly
|
|
36
|
+
- Wrong network for the watchlist row (e.g. X tools on a `tiktok` handle)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 1) Scout gate (before opportunity scores)
|
|
41
|
+
|
|
42
|
+
Every scanned signal gets a **purpose** and a **scout_label**.
|
|
43
|
+
**Default bias: discard.** Max **5** `produce` topics per promotion session.
|
|
44
|
+
|
|
45
|
+
### Purpose
|
|
46
|
+
|
|
47
|
+
| purpose | Meaning | Create T-? | Score opportunity? |
|
|
48
|
+
|---------|---------|------------|------------------|
|
|
49
|
+
| `discard` | Noise / wrong ICP / no reusable mechanism | **No** | No |
|
|
50
|
+
| `library` | Worth swipe/atom/claim later; not this week's post | Optional T- with status `library` **or** offer capture only | Optional; **not** `ready` |
|
|
51
|
+
| `produce` | Candidate to open a run | **Yes** | **Yes** |
|
|
52
|
+
|
|
53
|
+
### Scout label (on produce / library)
|
|
54
|
+
|
|
55
|
+
| scout_label | Meaning |
|
|
56
|
+
|-------------|---------|
|
|
57
|
+
| `demand` | Target reader states a real pain/job in their own words |
|
|
58
|
+
| `ally` | Peer system / adjacent thinking we can teach beside |
|
|
59
|
+
| `foil` | Competitor or default path to contrast |
|
|
60
|
+
| `craft_only` | Stealable structure; weak ICP/wedge fit — prefer `library`, rarely `produce` |
|
|
61
|
+
|
|
62
|
+
### Scout discard examples (profile-aware)
|
|
63
|
+
|
|
64
|
+
- Pure growth/engagement playbook with **zero** angle toward this profile’s pillars
|
|
65
|
+
- Comment-gate kits with no inspectable mechanism
|
|
66
|
+
- End-user vanity metrics with no buyer/operator shape from `audience.md`
|
|
67
|
+
- Wrong vertical vs profile **Not for** (unless user override)
|
|
68
|
+
|
|
69
|
+
### Scout pass hints (toward `produce`)
|
|
70
|
+
|
|
71
|
+
- Pain named in `audience.md` (or clear operator inside that buyer shape)
|
|
72
|
+
- Mechanism / contrast that maps to at least one pillar
|
|
73
|
+
- Ally or foil that sharpens the account’s wedge without inventing claims
|
|
74
|
+
- Reusable structure that still clears the audience floor (else prefer `library`)
|
|
75
|
+
|
|
76
|
+
Record on the topic item: `purpose`, `scout_label`, one-line `scout_note`.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 2) Opportunity dimensions (0–10 each)
|
|
81
|
+
|
|
82
|
+
Only required for `purpose: produce`. Optional brief notes for `library`.
|
|
83
|
+
|
|
84
|
+
**Principle:** these five dimensions answer **"is this worth saying?"** — not "can it be written well?"
|
|
85
|
+
Presentation concerns (framework, structure, format) belong at Brief stage.
|
|
86
|
+
|
|
87
|
+
| Key | Name | What to judge | Weight |
|
|
88
|
+
|-----|------|---------------|--------|
|
|
89
|
+
| `context` | Context | What changed? Why now? Timing, freshness, relevance to the audience's world | **15%** |
|
|
90
|
+
| `audience` | Audience | Who specifically cares? ICP match — pain / buyer shape / wedge from profile | **20%** |
|
|
91
|
+
| `conflict` | Conflict | Current belief vs reality — is there a real gap? How strong is the tension? No conflict = no content | **25%** |
|
|
92
|
+
| `insight` | Insight | Non-obvious perspective, mechanism, or reframe the audience hasn't seen | **25%** |
|
|
93
|
+
| `evidence` | Evidence | Can the core angle be supported with something specific? What evidence exists or could be found? | **15%** |
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
opp_score = 0.15×context + 0.20×audience + 0.25×conflict + 0.25×insight + 0.15×evidence
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Round to 1 decimal.
|
|
100
|
+
|
|
101
|
+
### Per-dimension scoring guide
|
|
102
|
+
|
|
103
|
+
**Context (15%)**
|
|
104
|
+
|
|
105
|
+
| Range | Guide |
|
|
106
|
+
|-------|-------|
|
|
107
|
+
| 8–10 | Clear, recent shift the audience has felt but may not have named |
|
|
108
|
+
| 5–7 | Real change but not urgent or widely felt yet |
|
|
109
|
+
| 0–4 | Nothing changed; evergreen truism or stale news |
|
|
110
|
+
|
|
111
|
+
**Audience (20%)** — read `profiles/<id>/audience.md` and `pillars.md` first
|
|
112
|
+
|
|
113
|
+
Score using these checks (note which hit):
|
|
114
|
+
|
|
115
|
+
1. **Pain** — matches a real pain / job from audience (or clear operator inside that shape)
|
|
116
|
+
2. **Buyer shape** — who buys/acts matches audience buyer as defined there
|
|
117
|
+
3. **Wedge land** — can honestly teach or contrast toward this account’s product/wedge without inventing claims
|
|
118
|
+
|
|
119
|
+
| Range | Guide |
|
|
120
|
+
|-------|-------|
|
|
121
|
+
| 8–10 | ≥2 checks strong; clear buyer + pain |
|
|
122
|
+
| 6–7 | One strong check; usable with careful angle |
|
|
123
|
+
| 4–5 | Stretch; usually `backlog` even if other dims are high |
|
|
124
|
+
| 0–3 | Wrong room → should have been scout `discard` / `library` |
|
|
125
|
+
|
|
126
|
+
**Conflict (25%)** — the most important dimension
|
|
127
|
+
|
|
128
|
+
| Range | Guide |
|
|
129
|
+
|-------|-------|
|
|
130
|
+
| 8–10 | Clear belief gap: audience believes X, reality is Y, and the gap has consequences |
|
|
131
|
+
| 5–7 | Some tension but the gap is soft or already widely acknowledged |
|
|
132
|
+
| 0–4 | No real conflict; topic is an observation or list with nothing to challenge |
|
|
133
|
+
|
|
134
|
+
When scoring, the agent must write the `current_belief` and `belief_gap` on the topic item — not just a score. If you can't articulate what the audience currently believes wrong, the conflict score cannot be above 5.
|
|
135
|
+
|
|
136
|
+
**Insight (25%)**
|
|
137
|
+
|
|
138
|
+
| Range | Guide |
|
|
139
|
+
|-------|-------|
|
|
140
|
+
| 8–10 | Genuinely non-obvious; reframes how the audience thinks about the problem |
|
|
141
|
+
| 5–7 | Useful perspective but predictable for a knowledgeable reader |
|
|
142
|
+
| 0–4 | Restates common knowledge |
|
|
143
|
+
|
|
144
|
+
**Evidence (15%)**
|
|
145
|
+
|
|
146
|
+
| Range | Guide |
|
|
147
|
+
|-------|-------|
|
|
148
|
+
| 8–10 | Specific, named evidence available (data, product behavior, case, mechanism) |
|
|
149
|
+
| 5–7 | Evidence exists but generic or secondhand |
|
|
150
|
+
| 0–4 | No evidence beyond assertion; "experts say" with no expert named |
|
|
151
|
+
|
|
152
|
+
When `evidence < 5`, agent should flag an **evidence gap** on the topic item and may suggest **research** before finalizing the score. Topics can be re-scored after research fills the gap.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 3) Verdict
|
|
157
|
+
|
|
158
|
+
For `purpose: produce`:
|
|
159
|
+
|
|
160
|
+
| Verdict | Rule |
|
|
161
|
+
|---------|------|
|
|
162
|
+
| **ready** | `opp_score ≥ 7.5` **and** `audience ≥ 6` |
|
|
163
|
+
| **backlog** | opp_score ≥ 6.0 and audience ≥ 5, but not both ready thresholds; **or** one dim very high / another mid — may research, re-angle, and rescore |
|
|
164
|
+
| **parked** | opp_score < 6.0 **or** audience < 5 **or** hard filter |
|
|
165
|
+
|
|
166
|
+
For `purpose: library`: status `library` (not ready). User may later promote via re-angle + rescore as `produce`.
|
|
167
|
+
|
|
168
|
+
**Never** promote to `ready` on high `src_*` alone.
|
|
169
|
+
|
|
170
|
+
### Weak-dim guidance
|
|
171
|
+
|
|
172
|
+
When any single dim scores < 6, agent flags it with a suggestion:
|
|
173
|
+
|
|
174
|
+
| Weak dim | Suggestion |
|
|
175
|
+
|----------|-----------|
|
|
176
|
+
| context | "Is there a real trigger or change? If not, consider timing or reframing." |
|
|
177
|
+
| audience | "Who specifically has this problem? If no ICP match, consider library instead." |
|
|
178
|
+
| conflict | "What does the audience believe that's wrong? If no gap, this may not be content." |
|
|
179
|
+
| insight | "What's the non-obvious angle? If predictable, consider a different perspective." |
|
|
180
|
+
| evidence | "Can we prove this? Research X to strengthen." |
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 4) Source engagement (sort only)
|
|
185
|
+
|
|
186
|
+
When source is an external post, record on **`topics/_index.md`**:
|
|
187
|
+
|
|
188
|
+
- `src_likes`, `src_replies`, `src_bookmarks`, optional `src_views`
|
|
189
|
+
- `engagement_at`
|
|
190
|
+
|
|
191
|
+
**Do not** fold into `opp_score`.
|
|
192
|
+
Among **ready** items only: prefer higher `src_replies` / `src_bookmarks` over raw likes/views.
|
|
193
|
+
High views + low audience → still not ready.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Rescore
|
|
198
|
+
|
|
199
|
+
Allowed: same `T-id`, update scores / purpose / status in item + `_index`.
|
|
200
|
+
Re-angling a `library` or `backlog` into profile fit is the usual upgrade path.
|
|
201
|
+
Research → new evidence → re-score `evidence` dim is the other upgrade path.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# topics/watchlists/
|
|
2
|
+
|
|
3
|
+
**One file per profile** + optional shared table.
|
|
4
|
+
|
|
5
|
+
| Path | Scope |
|
|
6
|
+
|------|--------|
|
|
7
|
+
| `_shared.md` | All profiles (`*`) — merged on every scan |
|
|
8
|
+
| `<profile_id>.md` | Only that profile (e.g. `easysociable-builder.md`) |
|
|
9
|
+
|
|
10
|
+
Registry / scan rules: `../WATCHLIST.md`.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Watchlist — shared (`*`)
|
|
2
|
+
|
|
3
|
+
Rows here apply to **every** profile when scanning (merge with `topics/watchlists/<profile_id>.md`).
|
|
4
|
+
|
|
5
|
+
Use only for handles that are truly cross-positioning. Prefer putting niche-specific radars in the profile file.
|
|
6
|
+
|
|
7
|
+
| # | platform | handle | niche_tag | why_on_list | weight | status |
|
|
8
|
+
|---|----------|--------|-----------|-------------|--------|--------|
|
|
9
|
+
|
|
10
|
+
*(empty — add rows only when a handle should appear for all profiles)*
|
|
11
|
+
|
|
12
|
+
## Id note
|
|
13
|
+
|
|
14
|
+
Use `#S-01`, `#S-02`, … so shared ids do not collide with profile-local `#1…`.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# wiki/
|
|
2
|
+
|
|
3
|
+
Split library (option B):
|
|
4
|
+
|
|
5
|
+
| Path | What | Run selection |
|
|
6
|
+
|------|------|----------------|
|
|
7
|
+
| `atoms/` | Techniques per role (hook, cta, proof, …) | Match swipe beats / roles; **none OK** |
|
|
8
|
+
| `claims/` | Falsifiable angles / learned strategies | 0–1 claim; **none OK** |
|
|
9
|
+
|
|
10
|
+
Selection always starts at each folder’s `_index.md` (Approach B).
|
|
11
|
+
Filter rows by **platform** and **profiles** (`*` = all profiles) from the current account’s profile_id.
|
|
12
|
+
Drop atom `dead` and claim `retired`. Prefer atom `working`. Claim `status` is epistemology; rank claims by `win/n`.
|
|
13
|
+
Atom use history = `published/_index`. Claim proposition evidence = `## Evidence` in the claim file (not in atoms).
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Atoms index
|
|
2
|
+
|
|
3
|
+
Techniques per role. Global library; filter with **`profiles`** + **`platforms`** + **`type`**.
|
|
4
|
+
|
|
5
|
+
**Types:** `hook` | `reframe` | `proof` | `process` | `cta` | `other`
|
|
6
|
+
**Selection:** table first → drop `dead` → prefer `working` then higher `win/n` → 0–1 per needed type. **`none` allowed.**
|
|
7
|
+
|
|
8
|
+
## Status (hit-rate, our posts)
|
|
9
|
+
|
|
10
|
+
`trial` | `working` | `dead` — same meaning as `swipe/_index.md`.
|
|
11
|
+
`n` / `win` / `loss` = our published cache. Do not share claim’s epistemic words.
|
|
12
|
+
**No Evidence table in atom files.** Use history = `published/_index` (column `atoms`).
|
|
13
|
+
|
|
14
|
+
## Ingest
|
|
15
|
+
|
|
16
|
+
`CLAUDE.md` § Library ingest. Capture offer path A; publish path B + gates.
|
|
17
|
+
|
|
18
|
+
## Catalog
|
|
19
|
+
|
|
20
|
+
| id | file | type | platforms | profiles | status | n | win | loss | one_liner |
|
|
21
|
+
|----|------|------|-----------|----------|--------|---|-----|------|-----------|
|
|
22
|
+
|
|
23
|
+
`profiles: *` = all profiles.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: A-NEW
|
|
3
|
+
type: hook # hook | reframe | proof | process | cta | other
|
|
4
|
+
status: trial # trial | working | dead
|
|
5
|
+
platforms: [x]
|
|
6
|
+
profiles: ["*"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Title
|
|
10
|
+
|
|
11
|
+
## Procedure (how to write this beat)
|
|
12
|
+
|
|
13
|
+
1. …
|
|
14
|
+
|
|
15
|
+
## Applies when
|
|
16
|
+
|
|
17
|
+
- …
|
|
18
|
+
|
|
19
|
+
## Avoid when
|
|
20
|
+
|
|
21
|
+
- …
|
|
22
|
+
|
|
23
|
+
## Examples (short; prefer paraphrase over full copy of others)
|
|
24
|
+
|
|
25
|
+
- …
|
|
26
|
+
|
|
27
|
+
## Source
|
|
28
|
+
|
|
29
|
+
- capture / raw / run links if any
|
|
30
|
+
|
|
31
|
+
<!-- Use history: published/_index column atoms. Do not add ## Evidence here. -->
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Claims index
|
|
2
|
+
|
|
3
|
+
Falsifiable angles. Global library; filter with **`profiles`** + **`platforms`**.
|
|
4
|
+
|
|
5
|
+
**Selection:** 0–1 claim per run. Drop `retired`. **`hypothesis` is valid to pick** (that is the test). Rank remaining by `win/n`, not by epistemic status. **`none` allowed.**
|
|
6
|
+
|
|
7
|
+
## Status (epistemology — “do we still assert this”)
|
|
8
|
+
|
|
9
|
+
`hypothesis` | `supported` | `weakened` | `retired`
|
|
10
|
+
|
|
11
|
+
This is **not** hit-rate. Proposition ledger = `## Evidence` in **this claim’s file**.
|
|
12
|
+
|
|
13
|
+
## Hits (separate)
|
|
14
|
+
|
|
15
|
+
`n` / `win` / `loss` = our `published.result` when this claim was used. Updating hits **must not** auto-change `status`.
|
|
16
|
+
|
|
17
|
+
## Ingest / promote
|
|
18
|
+
|
|
19
|
+
`CLAUDE.md` § Library ingest. No single-win → `supported`. `supported` = ≥3 runs that support the **proposition** + user 批准.
|
|
20
|
+
|
|
21
|
+
## Catalog
|
|
22
|
+
|
|
23
|
+
| id | file | type | platforms | profiles | status | n | win | loss | one_liner |
|
|
24
|
+
|----|------|------|-----------|----------|--------|---|-----|------|-----------|
|
|
25
|
+
|
|
26
|
+
`profiles: *` = all profiles.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: C-NEW
|
|
3
|
+
version: 1
|
|
4
|
+
type: angle
|
|
5
|
+
status: hypothesis
|
|
6
|
+
platforms: [x]
|
|
7
|
+
profiles: ["*"]
|
|
8
|
+
related_swipe: []
|
|
9
|
+
related_atoms: []
|
|
10
|
+
primary_metric: replies
|
|
11
|
+
confidence: low
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# 主张(Objective)
|
|
15
|
+
|
|
16
|
+
One falsifiable sentence.
|
|
17
|
+
|
|
18
|
+
## Applies when
|
|
19
|
+
|
|
20
|
+
- …
|
|
21
|
+
|
|
22
|
+
## Avoid when
|
|
23
|
+
|
|
24
|
+
- …
|
|
25
|
+
|
|
26
|
+
## Procedure (angle constraints for Writer)
|
|
27
|
+
|
|
28
|
+
1. …
|
|
29
|
+
|
|
30
|
+
## Evidence
|
|
31
|
+
|
|
32
|
+
| run | date | result | vs claim | note |
|
|
33
|
+
|-----|------|--------|----------|------|
|
|
34
|
+
| | | | | |
|
|
35
|
+
|
|
36
|
+
## Source
|
|
37
|
+
|
|
38
|
+
- …
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# workbench/
|
|
2
|
+
|
|
3
|
+
Read-only observatory. Source of truth remains the markdown indexes.
|
|
4
|
+
|
|
5
|
+
| File | Role |
|
|
6
|
+
|------|------|
|
|
7
|
+
| `template.html` | UI (do not overwrite on later skill updates if the user customized it) |
|
|
8
|
+
| `build.py` | Scan indexes → `index.html` |
|
|
9
|
+
| `serve.py` | `http://127.0.0.1:8765/workbench/` |
|
|
10
|
+
| `index.html` | Generated — safe to rebuild |
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
python3 workbench/build.py
|
|
14
|
+
python3 workbench/serve.py
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
If port 8765 is already serving this engine, do not start a second server. Rebuild after Agent writes markdown.
|