@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.
Files changed (93) hide show
  1. package/README.md +29 -9
  2. package/dist/easysociable.js +111 -100
  3. package/dist/easysociable.js.map +1 -1
  4. package/package.json +2 -2
  5. package/scripts/engine/migrate-split-vault.py +75 -0
  6. package/skills/ONBOARDING.md +19 -4
  7. package/skills/easysociable-content/SKILL.md +25 -9
  8. package/content-engine/scripts/fixture.test.mjs +0 -24
  9. package/content-engine/scripts/starter.mjs +0 -58
  10. package/content-engine/scripts/validate.test.mjs +0 -101
  11. package/content-engine/scripts/workbench.mjs +0 -140
  12. package/content-engine/starter/CLAUDE.md +0 -908
  13. package/content-engine/starter/accounts/README.md +0 -9
  14. package/content-engine/starter/accounts/_index.md +0 -31
  15. package/content-engine/starter/accounts/overrides/README.md +0 -3
  16. package/content-engine/starter/engine.json +0 -23
  17. package/content-engine/starter/exports/README.md +0 -28
  18. package/content-engine/starter/hits/README.md +0 -5
  19. package/content-engine/starter/hits/_index.md +0 -30
  20. package/content-engine/starter/hits/_template.md +0 -46
  21. package/content-engine/starter/hits/entries/README.md +0 -3
  22. package/content-engine/starter/inbox/README.md +0 -9
  23. package/content-engine/starter/inbox/_index.md +0 -24
  24. package/content-engine/starter/inbox/entries/README.md +0 -3
  25. package/content-engine/starter/needs/README.md +0 -38
  26. package/content-engine/starter/needs/_index.md +0 -31
  27. package/content-engine/starter/needs/_template.md +0 -24
  28. package/content-engine/starter/needs/entries/README.md +0 -5
  29. package/content-engine/starter/platforms/README.md +0 -19
  30. package/content-engine/starter/platforms/ig.md +0 -69
  31. package/content-engine/starter/platforms/instagram.md +0 -5
  32. package/content-engine/starter/platforms/linkedin.md +0 -72
  33. package/content-engine/starter/platforms/threads.md +0 -69
  34. package/content-engine/starter/platforms/tiktok.md +0 -71
  35. package/content-engine/starter/platforms/x.md +0 -78
  36. package/content-engine/starter/platforms/xiaohongshu.md +0 -19
  37. package/content-engine/starter/products/README.md +0 -38
  38. package/content-engine/starter/products/_index.md +0 -25
  39. package/content-engine/starter/products/_template.md +0 -56
  40. package/content-engine/starter/products/entries/P-001-easysociable.md +0 -150
  41. package/content-engine/starter/products/entries/P-002-content-engine.md +0 -136
  42. package/content-engine/starter/profiles/_index.md +0 -16
  43. package/content-engine/starter/profiles/default/README.md +0 -17
  44. package/content-engine/starter/profiles/default/audience.md +0 -38
  45. package/content-engine/starter/profiles/default/boundaries.md +0 -14
  46. package/content-engine/starter/profiles/default/expression.md +0 -18
  47. package/content-engine/starter/profiles/default/handles.md +0 -8
  48. package/content-engine/starter/profiles/default/keywords.md +0 -31
  49. package/content-engine/starter/profiles/default/lanes.md +0 -12
  50. package/content-engine/starter/profiles/default/pillars.md +0 -33
  51. package/content-engine/starter/profiles/default/stories.md +0 -15
  52. package/content-engine/starter/profiles/default/voice.md +0 -38
  53. package/content-engine/starter/published/_index.md +0 -20
  54. package/content-engine/starter/raw/README.md +0 -4
  55. package/content-engine/starter/raw/_index.md +0 -12
  56. package/content-engine/starter/recommendations/README.md +0 -21
  57. package/content-engine/starter/recommendations/_index.md +0 -21
  58. package/content-engine/starter/recommendations/_template.md +0 -44
  59. package/content-engine/starter/runs/README.md +0 -22
  60. package/content-engine/starter/runs/_index.md +0 -41
  61. package/content-engine/starter/runs/_template/brief.md +0 -76
  62. package/content-engine/starter/runs/_template/draft.md +0 -11
  63. package/content-engine/starter/runs/_template/editor.md +0 -18
  64. package/content-engine/starter/runs/_template/feedback.md +0 -15
  65. package/content-engine/starter/runs/_template/idea.md +0 -27
  66. package/content-engine/starter/runs/_template/pack.md +0 -55
  67. package/content-engine/starter/runs/_template/packet.md +0 -31
  68. package/content-engine/starter/runs/_template/rubric.md +0 -19
  69. package/content-engine/starter/swipe/_index.md +0 -27
  70. package/content-engine/starter/swipe/_template.md +0 -36
  71. package/content-engine/starter/topics/README.md +0 -21
  72. package/content-engine/starter/topics/_index.md +0 -51
  73. package/content-engine/starter/topics/_template-item.md +0 -106
  74. package/content-engine/starter/topics/items/README.md +0 -4
  75. package/content-engine/starter/topics/scoring.md +0 -255
  76. package/content-engine/starter/wiki/README.md +0 -13
  77. package/content-engine/starter/wiki/atoms/_index.md +0 -23
  78. package/content-engine/starter/wiki/atoms/_template.md +0 -31
  79. package/content-engine/starter/wiki/claims/_index.md +0 -26
  80. package/content-engine/starter/wiki/claims/_template.md +0 -38
  81. package/content-engine/starter/workbench/README.md +0 -17
  82. package/content-engine/workbench/__pycache__/build.cpython-310.pyc +0 -0
  83. package/content-engine/workbench/build.py +0 -1467
  84. package/content-engine/workbench/serve.py +0 -53
  85. package/content-engine/workbench/template.html +0 -2686
  86. /package/{content-engine/scripts → scripts/engine}/contracts.mjs +0 -0
  87. /package/{content-engine/scripts → scripts/engine}/export-contracts.mjs +0 -0
  88. /package/{content-engine → scripts/engine}/fixtures/golden-run-en/draft.md +0 -0
  89. /package/{content-engine → scripts/engine}/fixtures/golden-run-en/idea.md +0 -0
  90. /package/{content-engine → scripts/engine}/fixtures/golden-run-en/pack-tiktok.json +0 -0
  91. /package/{content-engine/scripts → scripts/engine}/validate-export.mjs +0 -0
  92. /package/{content-engine/scripts → scripts/engine}/validate-pack.mjs +0 -0
  93. /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,4 +0,0 @@
1
- # items/
2
-
3
- One markdown file per topic (`T-YYYYMMDD-XX.md`).
4
- Registry: `../_index.md` (column `item` points here).
@@ -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.