@easysociable/cli 0.1.7 → 0.1.9
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 -9
- package/dist/easysociable.js +111 -100
- package/dist/easysociable.js.map +1 -1
- package/package.json +2 -2
- package/scripts/engine/migrate-split-vault.py +75 -0
- package/skills/ONBOARDING.md +19 -4
- package/skills/easysociable-content/SKILL.md +25 -9
- package/content-engine/scripts/fixture.test.mjs +0 -24
- package/content-engine/scripts/starter.mjs +0 -58
- package/content-engine/scripts/validate.test.mjs +0 -101
- package/content-engine/scripts/workbench.mjs +0 -140
- package/content-engine/starter/CLAUDE.md +0 -908
- package/content-engine/starter/accounts/README.md +0 -9
- package/content-engine/starter/accounts/_index.md +0 -31
- package/content-engine/starter/accounts/overrides/README.md +0 -3
- package/content-engine/starter/engine.json +0 -23
- package/content-engine/starter/exports/README.md +0 -28
- package/content-engine/starter/hits/README.md +0 -5
- package/content-engine/starter/hits/_index.md +0 -30
- package/content-engine/starter/hits/_template.md +0 -46
- package/content-engine/starter/hits/entries/README.md +0 -3
- package/content-engine/starter/inbox/README.md +0 -9
- package/content-engine/starter/inbox/_index.md +0 -24
- package/content-engine/starter/inbox/entries/README.md +0 -3
- package/content-engine/starter/needs/README.md +0 -38
- package/content-engine/starter/needs/_index.md +0 -31
- package/content-engine/starter/needs/_template.md +0 -24
- package/content-engine/starter/needs/entries/README.md +0 -5
- package/content-engine/starter/platforms/README.md +0 -19
- package/content-engine/starter/platforms/ig.md +0 -69
- package/content-engine/starter/platforms/instagram.md +0 -5
- package/content-engine/starter/platforms/linkedin.md +0 -72
- package/content-engine/starter/platforms/threads.md +0 -69
- package/content-engine/starter/platforms/tiktok.md +0 -71
- package/content-engine/starter/platforms/x.md +0 -78
- package/content-engine/starter/platforms/xiaohongshu.md +0 -19
- package/content-engine/starter/products/README.md +0 -38
- package/content-engine/starter/products/_index.md +0 -25
- package/content-engine/starter/products/_template.md +0 -56
- package/content-engine/starter/products/entries/P-001-easysociable.md +0 -150
- package/content-engine/starter/products/entries/P-002-content-engine.md +0 -136
- package/content-engine/starter/profiles/_index.md +0 -16
- package/content-engine/starter/profiles/default/README.md +0 -17
- package/content-engine/starter/profiles/default/audience.md +0 -38
- package/content-engine/starter/profiles/default/boundaries.md +0 -14
- package/content-engine/starter/profiles/default/expression.md +0 -18
- package/content-engine/starter/profiles/default/handles.md +0 -8
- package/content-engine/starter/profiles/default/keywords.md +0 -31
- package/content-engine/starter/profiles/default/lanes.md +0 -12
- package/content-engine/starter/profiles/default/pillars.md +0 -33
- package/content-engine/starter/profiles/default/stories.md +0 -15
- package/content-engine/starter/profiles/default/voice.md +0 -38
- package/content-engine/starter/published/_index.md +0 -20
- package/content-engine/starter/raw/README.md +0 -4
- package/content-engine/starter/raw/_index.md +0 -12
- package/content-engine/starter/recommendations/README.md +0 -21
- package/content-engine/starter/recommendations/_index.md +0 -21
- package/content-engine/starter/recommendations/_template.md +0 -44
- package/content-engine/starter/runs/README.md +0 -22
- package/content-engine/starter/runs/_index.md +0 -41
- package/content-engine/starter/runs/_template/brief.md +0 -76
- package/content-engine/starter/runs/_template/draft.md +0 -11
- package/content-engine/starter/runs/_template/editor.md +0 -18
- package/content-engine/starter/runs/_template/feedback.md +0 -15
- package/content-engine/starter/runs/_template/idea.md +0 -27
- package/content-engine/starter/runs/_template/pack.md +0 -55
- package/content-engine/starter/runs/_template/packet.md +0 -31
- package/content-engine/starter/runs/_template/rubric.md +0 -19
- package/content-engine/starter/swipe/_index.md +0 -27
- package/content-engine/starter/swipe/_template.md +0 -36
- package/content-engine/starter/topics/README.md +0 -21
- package/content-engine/starter/topics/_index.md +0 -51
- package/content-engine/starter/topics/_template-item.md +0 -106
- package/content-engine/starter/topics/items/README.md +0 -4
- package/content-engine/starter/topics/scoring.md +0 -255
- package/content-engine/starter/wiki/README.md +0 -13
- package/content-engine/starter/wiki/atoms/_index.md +0 -23
- package/content-engine/starter/wiki/atoms/_template.md +0 -31
- package/content-engine/starter/wiki/claims/_index.md +0 -26
- package/content-engine/starter/wiki/claims/_template.md +0 -38
- package/content-engine/starter/workbench/README.md +0 -17
- package/content-engine/workbench/__pycache__/build.cpython-310.pyc +0 -0
- package/content-engine/workbench/build.py +0 -1467
- package/content-engine/workbench/serve.py +0 -53
- package/content-engine/workbench/template.html +0 -2686
- /package/{content-engine/scripts → scripts/engine}/contracts.mjs +0 -0
- /package/{content-engine/scripts → scripts/engine}/export-contracts.mjs +0 -0
- /package/{content-engine → scripts/engine}/fixtures/golden-run-en/draft.md +0 -0
- /package/{content-engine → scripts/engine}/fixtures/golden-run-en/idea.md +0 -0
- /package/{content-engine → scripts/engine}/fixtures/golden-run-en/pack-tiktok.json +0 -0
- /package/{content-engine/scripts → scripts/engine}/validate-export.mjs +0 -0
- /package/{content-engine/scripts → scripts/engine}/validate-pack.mjs +0 -0
- /package/{content-engine/scripts → scripts/engine}/validate-run.mjs +0 -0
|
@@ -1,106 +0,0 @@
|
|
|
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
|
-
lane: teach
|
|
10
|
-
generation_mode: demand
|
|
11
|
-
source_type: inbox | user | need | product | recommendation
|
|
12
|
-
purpose: produce | library | discard
|
|
13
|
-
scout_label: demand | ally | foil | craft_only
|
|
14
|
-
capture_id:
|
|
15
|
-
need_ids:
|
|
16
|
-
product_ids: none
|
|
17
|
-
product_fit: none
|
|
18
|
-
recommendation_ids: none
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
# Decision card
|
|
22
|
-
|
|
23
|
-
> A content opportunity under discussion — not a final publish title.
|
|
24
|
-
|
|
25
|
-
**Language:** Match `profiles/<id>/voice.md` **Language** (else pillars “Primary public language”, else `engine.json` locale). Readable judgment + `one_liner` must use that language. Verbatim Needs/Capture quotes stay untranslated. Operator chat may add a short gloss in another language; the file does not.
|
|
26
|
-
|
|
27
|
-
**Verdict:** ready | backlog | parked
|
|
28
|
-
**Why this status:** one sentence
|
|
29
|
-
**Who it’s for:** one sentence — concrete audience and situation
|
|
30
|
-
**Core judgment:** one sentence — what this piece actually argues
|
|
31
|
-
**Next step:** open a run / fill needs / fill evidence / re-angle / kill
|
|
32
|
-
**Product link:** none | P-… · direct | adjacent · one sentence
|
|
33
|
-
**Generation path:** demand | demand_to_offer | demand_to_review | review | offer_education | profile_thesis
|
|
34
|
-
*(Agent must ask the user to choose before `produce`; do not silent-default.)*
|
|
35
|
-
|
|
36
|
-
## What problem does this solve?
|
|
37
|
-
|
|
38
|
-
2–4 sentences on the real-world problem. Do not restate a title.
|
|
39
|
-
|
|
40
|
-
## What do they believe now?
|
|
41
|
-
|
|
42
|
-
Name the false belief or stuck confusion.
|
|
43
|
-
|
|
44
|
-
## What cut are we making?
|
|
45
|
-
|
|
46
|
-
Our angle only. Not a full headline. Do not rewrite a source post as our thesis.
|
|
47
|
-
|
|
48
|
-
## Why now?
|
|
49
|
-
|
|
50
|
-
What changed, and why this audience must face it now. Not a news summary.
|
|
51
|
-
|
|
52
|
-
## What should change after reading?
|
|
53
|
-
|
|
54
|
-
Before → after for belief or action.
|
|
55
|
-
|
|
56
|
-
## What is this based on?
|
|
57
|
-
|
|
58
|
-
Plain-language Needs, Product, Recommendation, Capture, or other evidence.
|
|
59
|
-
|
|
60
|
-
## Current gaps
|
|
61
|
-
|
|
62
|
-
Missing need evidence, cases, feedback, or product facts. Write `none` if empty.
|
|
63
|
-
|
|
64
|
-
## Suggested form
|
|
65
|
-
|
|
66
|
-
Platform, lane, and form. No full script yet.
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Score / trace appendix
|
|
71
|
-
|
|
72
|
-
For review, machines, and handoff — not the primary reading surface.
|
|
73
|
-
|
|
74
|
-
### Score
|
|
75
|
-
|
|
76
|
-
Numbers only. Do not repeat the card above in a note column.
|
|
77
|
-
|
|
78
|
-
| dim | 0–10 |
|
|
79
|
-
|-----|------|
|
|
80
|
-
| context | |
|
|
81
|
-
| audience | |
|
|
82
|
-
| conflict | |
|
|
83
|
-
| insight | |
|
|
84
|
-
| evidence | |
|
|
85
|
-
|
|
86
|
-
**opp:** · **aud:** · **verdict:**
|
|
87
|
-
|
|
88
|
-
### Trace
|
|
89
|
-
|
|
90
|
-
- source:
|
|
91
|
-
- capture_id: (inbox `C-…` only)
|
|
92
|
-
- need_ids:
|
|
93
|
-
- product_ids:
|
|
94
|
-
- product_fit:
|
|
95
|
-
- recommendation_ids:
|
|
96
|
-
- lane:
|
|
97
|
-
- generation_mode:
|
|
98
|
-
- raw:
|
|
99
|
-
- src: likes / replies / bookmarks / views @ time
|
|
100
|
-
- swipe: none | S…
|
|
101
|
-
- atoms: none | …
|
|
102
|
-
- claim: none | C…
|
|
103
|
-
|
|
104
|
-
### Constraints
|
|
105
|
-
|
|
106
|
-
Writer must-nots. Keep short. Empty is allowed.
|
|
@@ -1,255 +0,0 @@
|
|
|
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
|
-
Needs / Products / Recommendations → editorial judgment
|
|
18
|
-
→ user accepts
|
|
19
|
-
inbox / url / need / user idea
|
|
20
|
-
→ 0) Hard filters
|
|
21
|
-
→ 1) Scout gate (purpose + label) ← most signals die here
|
|
22
|
-
→ 2) Opportunity five-dim score ← only for produce candidates
|
|
23
|
-
→ 3) Verdict (opp_score + audience floor)
|
|
24
|
-
→ 4) Among ready only: sort by src_*
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
Library-only signals may skip (2)–(3) — see Scout purposes below.
|
|
28
|
-
|
|
29
|
-
Topic scoring runs only after an explicit input and editorial judgment. Product or recommendation fit is context, not evidence of audience demand.
|
|
30
|
-
|
|
31
|
-
Need match (`need_ids` non-empty) → default `scout_label=demand`. Do not create an `N-` from a product claim or headline.
|
|
32
|
-
|
|
33
|
-
Product fit is a separate optional annotation:
|
|
34
|
-
|
|
35
|
-
```text
|
|
36
|
-
Needs = demand evidence
|
|
37
|
-
Products = offer facts
|
|
38
|
-
Topics = editorial judgment over the evidence
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Use `product_ids` only when the Topic honestly connects to an active product
|
|
42
|
-
entry. Use `product_fit=direct` when the Topic addresses a problem the product
|
|
43
|
-
solves, `adjacent` when it builds context without being a pitch, and `none`
|
|
44
|
-
when no product connection is needed. Product fit does not increase a score,
|
|
45
|
-
replace `need_ids`, or make a Topic `ready`.
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## 0) Hard filters (fail → do not create topic, or `parked`)
|
|
50
|
-
|
|
51
|
-
- Off **profile pillars** (unless user override)
|
|
52
|
-
- Hits audience **Not for** (F4F, pure crypto shill, comment-gate junk as the only substance, etc.)
|
|
53
|
-
- Requires invented personal metrics/experience to write honestly
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## 1) Scout gate (before opportunity scores)
|
|
58
|
-
|
|
59
|
-
Every scanned signal gets a **purpose** and a **scout_label**.
|
|
60
|
-
**Default bias: discard.** Max **5** `produce` topics per promotion session.
|
|
61
|
-
|
|
62
|
-
### Purpose
|
|
63
|
-
|
|
64
|
-
| purpose | Meaning | Create T-? | Score opportunity? |
|
|
65
|
-
|---------|---------|------------|------------------|
|
|
66
|
-
| `discard` | Noise / wrong ICP / no reusable mechanism | **No** | No |
|
|
67
|
-
| `library` | Worth swipe/atom/claim later; not this week's post | Optional T- with status `library` **or** offer capture only | Optional; **not** `ready` |
|
|
68
|
-
| `produce` | Candidate to open a run | **Yes** | **Yes** |
|
|
69
|
-
|
|
70
|
-
### Scout label (on produce / library)
|
|
71
|
-
|
|
72
|
-
| scout_label | Meaning |
|
|
73
|
-
|-------------|---------|
|
|
74
|
-
| `demand` | Target reader states a real pain/job in their own words |
|
|
75
|
-
| `ally` | Peer system / adjacent thinking we can teach beside |
|
|
76
|
-
| `foil` | Competitor or default path to contrast |
|
|
77
|
-
| `craft_only` | Stealable structure; weak ICP/wedge fit — prefer `library`, rarely `produce` |
|
|
78
|
-
|
|
79
|
-
### Scout discard examples (profile-aware)
|
|
80
|
-
|
|
81
|
-
- Pure growth/engagement playbook with **zero** angle toward this profile’s pillars
|
|
82
|
-
- Comment-gate kits with no inspectable mechanism
|
|
83
|
-
- End-user vanity metrics with no buyer/operator shape from `audience.md`
|
|
84
|
-
- Wrong vertical vs profile **Not for** (unless user override)
|
|
85
|
-
|
|
86
|
-
### Scout pass hints (toward `produce`)
|
|
87
|
-
|
|
88
|
-
- Pain named in `audience.md` (or clear operator inside that buyer shape)
|
|
89
|
-
- Mechanism / contrast that maps to at least one pillar
|
|
90
|
-
- Ally or foil that sharpens the account’s wedge without inventing claims
|
|
91
|
-
- Reusable structure that still clears the audience floor (else prefer `library`)
|
|
92
|
-
|
|
93
|
-
Record on the topic item: `purpose`, `scout_label`, one-line `scout_note`.
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## 2) Opportunity dimensions (0–10 each)
|
|
98
|
-
|
|
99
|
-
Only required for `purpose: produce`. Optional brief notes for `library`.
|
|
100
|
-
|
|
101
|
-
**Principle:** these five dimensions answer **"is this worth saying?"** — not "can it be written well?"
|
|
102
|
-
Presentation concerns (framework, structure, format) belong at Brief stage.
|
|
103
|
-
|
|
104
|
-
Write reasons in the topic's **readable judgment layer**. The `## Score` table is numbers only — do not duplicate the card in a note column. Verdict (`ready` / `backlog` / `parked`) belongs in the decision summary, then echoed as one line under Score.
|
|
105
|
-
|
|
106
|
-
| Key | Name | What to judge | Weight |
|
|
107
|
-
|-----|------|---------------|--------|
|
|
108
|
-
| `context` | Context | What changed? Why now? Timing, freshness, relevance to the audience's world | **15%** |
|
|
109
|
-
| `audience` | Audience | Who specifically cares? ICP match — pain / buyer shape / wedge from profile | **20%** |
|
|
110
|
-
| `conflict` | Conflict | Current belief vs reality — is there a real gap? How strong is the tension? No conflict = no content | **25%** |
|
|
111
|
-
| `insight` | Insight | Non-obvious perspective, mechanism, or reframe the audience hasn't seen | **25%** |
|
|
112
|
-
| `evidence` | Evidence | Can the core angle be supported with something specific? What evidence exists or could be found? | **15%** |
|
|
113
|
-
|
|
114
|
-
```text
|
|
115
|
-
opp_score = 0.15×context + 0.20×audience + 0.25×conflict + 0.25×insight + 0.15×evidence
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Round to 1 decimal.
|
|
119
|
-
|
|
120
|
-
### Per-dimension scoring guide
|
|
121
|
-
|
|
122
|
-
**Context (15%)**
|
|
123
|
-
|
|
124
|
-
| Range | Guide |
|
|
125
|
-
|-------|-------|
|
|
126
|
-
| 8–10 | Clear, recent shift the audience has felt but may not have named |
|
|
127
|
-
| 5–7 | Real change but not urgent or widely felt yet |
|
|
128
|
-
| 0–4 | Nothing changed; evergreen truism or stale news |
|
|
129
|
-
|
|
130
|
-
**Audience (20%)** — read `profiles/<id>/audience.md` and `pillars.md` first
|
|
131
|
-
|
|
132
|
-
Score using these checks (note which hit):
|
|
133
|
-
|
|
134
|
-
1. **Pain** — matches a real pain / job from audience (or clear operator inside that shape)
|
|
135
|
-
2. **Buyer shape** — who buys/acts matches audience buyer as defined there
|
|
136
|
-
3. **Wedge land** — can honestly teach or contrast toward this account’s product/wedge without inventing claims
|
|
137
|
-
|
|
138
|
-
If product fit is `direct`, load the cited product entry and verify that the
|
|
139
|
-
Topic's problem and proposed CTA are inside its `Problem`, `Mechanism`, and
|
|
140
|
-
`Not solving` sections. If the product is not needed, score the Topic on its
|
|
141
|
-
audience and wedge without forcing a mention.
|
|
142
|
-
|
|
143
|
-
**Need-source exception:** when `source_type=need` **and** `need_ids` is non-empty, matching **at least one need gloss** counts as one strong audience check. Do **not** require a full ICP (`audience.md` / `pillars.md` may still be hypothesis). Non-need sources do not get this exception. `ready` is still `opp_score ≥ 7.5` **and** `audience ≥ 6`.
|
|
144
|
-
|
|
145
|
-
Needs default `scout_label=demand`. Still pass hard filters. `frequency ≥ 3` may strengthen context `why_now`; do **not** fold it into `src_*`.
|
|
146
|
-
|
|
147
|
-
| Range | Guide |
|
|
148
|
-
|-------|-------|
|
|
149
|
-
| 8–10 | ≥2 checks strong; clear buyer + pain |
|
|
150
|
-
| 6–7 | One strong check; usable with careful angle |
|
|
151
|
-
| 4–5 | Stretch; usually `backlog` even if other dims are high |
|
|
152
|
-
| 0–3 | Wrong room → should have been scout `discard` / `library` |
|
|
153
|
-
|
|
154
|
-
**Conflict (25%)** — the most important dimension
|
|
155
|
-
|
|
156
|
-
| Range | Guide |
|
|
157
|
-
|-------|-------|
|
|
158
|
-
| 8–10 | Clear belief gap: audience believes X, reality is Y, and the gap has consequences |
|
|
159
|
-
| 5–7 | Some tension but the gap is soft or already widely acknowledged |
|
|
160
|
-
| 0–4 | No real conflict; topic is an observation or list with nothing to challenge |
|
|
161
|
-
|
|
162
|
-
When scoring, write the false belief and the gap once under 「他们现在相信什么」 — not just a score, and not a second time in the Score table. If you can't articulate what the audience currently believes wrong, the conflict score cannot be above 5.
|
|
163
|
-
|
|
164
|
-
**Insight (25%)**
|
|
165
|
-
|
|
166
|
-
| Range | Guide |
|
|
167
|
-
|-------|-------|
|
|
168
|
-
| 8–10 | Genuinely non-obvious; reframes how the audience thinks about the problem |
|
|
169
|
-
| 5–7 | Useful perspective but predictable for a knowledgeable reader |
|
|
170
|
-
| 0–4 | Restates common knowledge |
|
|
171
|
-
|
|
172
|
-
**Evidence (15%)**
|
|
173
|
-
|
|
174
|
-
| Range | Guide |
|
|
175
|
-
|-------|-------|
|
|
176
|
-
| 8–10 | Specific, named evidence available (data, product behavior, case, mechanism) |
|
|
177
|
-
| 5–7 | Evidence exists but generic or secondhand |
|
|
178
|
-
| 0–4 | No evidence beyond assertion; "experts say" with no expert named |
|
|
179
|
-
|
|
180
|
-
A verbatim need quote is `observation` evidence. List the quote (or a paraphrase **and** the `N-` id) under `## Evidence.available`. Without an `N-` / `C-` / user-lived experience, evidence cannot be above 5. Mechanism / lived experience is still required to reach 8–10.
|
|
181
|
-
|
|
182
|
-
Product documentation is evidence of what the product does, not evidence that
|
|
183
|
-
the audience wants it. Do not use a product entry to manufacture a Need or to
|
|
184
|
-
raise the audience score.
|
|
185
|
-
|
|
186
|
-
### Generation-mode gates
|
|
187
|
-
|
|
188
|
-
Before scoring a `produce` Topic, **ask the user to choose `generation_mode`**.
|
|
189
|
-
Recommend `demand` when Need-led; do not silently assume. Then enforce required
|
|
190
|
-
inputs:
|
|
191
|
-
|
|
192
|
-
| mode | Required |
|
|
193
|
-
|------|----------|
|
|
194
|
-
| `demand` | `need_ids` + Profile |
|
|
195
|
-
| `demand_to_offer` | `need_ids` + `product_ids` + Profile |
|
|
196
|
-
| `demand_to_review` | `need_ids` + `recommendation_ids` + Profile |
|
|
197
|
-
| `review` | `recommendation_ids` + named evidence + Profile |
|
|
198
|
-
| `offer_education` | `product_ids` + product mechanism + Profile |
|
|
199
|
-
| `profile_thesis` | Profile + Pillar |
|
|
200
|
-
|
|
201
|
-
Do not use `review` when the only evidence is vendor marketing. Review entries
|
|
202
|
-
must state limitations, research date, and commercial disclosure where
|
|
203
|
-
relevant. Product-only and recommendation-only inputs do not imply demand and
|
|
204
|
-
never raise audience / `ready` alone.
|
|
205
|
-
|
|
206
|
-
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.
|
|
207
|
-
|
|
208
|
-
---
|
|
209
|
-
|
|
210
|
-
## 3) Verdict
|
|
211
|
-
|
|
212
|
-
For `purpose: produce`:
|
|
213
|
-
|
|
214
|
-
| Verdict | Rule |
|
|
215
|
-
|---------|------|
|
|
216
|
-
| **ready** | `opp_score ≥ 7.5` **and** `audience ≥ 6` |
|
|
217
|
-
| **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 |
|
|
218
|
-
| **parked** | opp_score < 6.0 **or** audience < 5 **or** hard filter |
|
|
219
|
-
|
|
220
|
-
For `purpose: library`: status `library` (not ready). User may later promote via re-angle + rescore as `produce`.
|
|
221
|
-
|
|
222
|
-
**Never** promote to `ready` on high `src_*` alone.
|
|
223
|
-
|
|
224
|
-
### Weak-dim guidance
|
|
225
|
-
|
|
226
|
-
When any single dim scores < 6, agent flags it with a suggestion:
|
|
227
|
-
|
|
228
|
-
| Weak dim | Suggestion |
|
|
229
|
-
|----------|-----------|
|
|
230
|
-
| context | "Is there a real trigger or change? If not, consider timing or reframing." |
|
|
231
|
-
| audience | "Who specifically has this problem? If no ICP match, consider library instead." |
|
|
232
|
-
| conflict | "What does the audience believe that's wrong? If no gap, this may not be content." |
|
|
233
|
-
| insight | "What's the non-obvious angle? If predictable, consider a different perspective." |
|
|
234
|
-
| evidence | "Can we prove this? Research X to strengthen." |
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## 4) Source engagement (sort only)
|
|
239
|
-
|
|
240
|
-
When source is an external post, record on **`topics/_index.md`**:
|
|
241
|
-
|
|
242
|
-
- `src_likes`, `src_replies`, `src_bookmarks`, optional `src_views`
|
|
243
|
-
- `engagement_at`
|
|
244
|
-
|
|
245
|
-
**Do not** fold into `opp_score`.
|
|
246
|
-
Among **ready** items only: prefer higher `src_replies` / `src_bookmarks` over raw likes/views.
|
|
247
|
-
High views + low audience → still not ready.
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
## Rescore
|
|
252
|
-
|
|
253
|
-
Allowed: same `T-id`, update scores / purpose / status in item + `_index`.
|
|
254
|
-
Re-angling a `library` or `backlog` into profile fit is the usual upgrade path.
|
|
255
|
-
Research → new evidence → re-score `evidence` dim is the other upgrade path.
|
|
@@ -1,13 +0,0 @@
|
|
|
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).
|
|
@@ -1,23 +0,0 @@
|
|
|
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.
|
|
@@ -1,31 +0,0 @@
|
|
|
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. -->
|
|
@@ -1,26 +0,0 @@
|
|
|
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.
|
|
@@ -1,38 +0,0 @@
|
|
|
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
|
-
- …
|
|
@@ -1,17 +0,0 @@
|
|
|
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.
|
|
Binary file
|