skillwiki 0.10.108 → 0.10.110
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/dist/{chunk-JCDAEZVD.js → chunk-5MV5SSRM.js} +1 -1
- package/dist/{chunk-Z4NCF6K6.js → chunk-6X6PPQNI.js} +481 -179
- package/dist/{chunk-DTTKCCQ4.js → chunk-KX5Y3GSX.js} +2 -2
- package/dist/{chunk-QU2IXZRN.js → chunk-NA3TZ4JN.js} +2 -2
- package/dist/{chunk-PGD3J2GE.js → chunk-QU2CKXM4.js} +49 -37
- package/dist/{chunk-GJC2CI3W.js → chunk-R2DJ7IJ5.js} +103 -0
- package/dist/{chunk-HMHMCPCE.js → chunk-WPJHDRTP.js} +1 -1
- package/dist/cli.js +135 -101
- package/dist/{index-projection-ESBJOBS7.js → index-projection-6XGESSHV.js} +3 -3
- package/dist/{managed-write-preflight-AYD3CJYD.js → managed-write-preflight-JPOBVVSU.js} +4 -4
- package/dist/skillwiki-mcp.js +7 -7
- package/dist/sources-CLOF5VAT.js +9 -0
- package/dist/vault-sync/scripts/wiki-snapshot.sh +20 -12
- package/package.json +1 -1
- package/skills/.claude-plugin/plugin.json +1 -1
- package/skills/.codex-plugin/plugin.json +1 -1
- package/skills/.cursor-plugin/plugin.json +1 -1
- package/skills/package.json +1 -1
- package/skills/skills/skillwiki-connect/SKILL.md +8 -0
- package/skills/skills/skillwiki-mcp/SKILL.md +8 -0
- package/skills/skills/using-skillwiki/SKILL.md +1 -1
- package/skills/skills/wiki-init/SKILL.md +12 -11
- package/skills/skillwiki-connect/SKILL.md +8 -0
- package/skills/skillwiki-mcp/SKILL.md +8 -0
- package/skills/using-skillwiki/SKILL.md +1 -1
- package/skills/wiki-init/SKILL.md +12 -11
- package/templates/launchd/com.karlchow.skillwiki-clip-outbox.plist +22 -0
- package/templates/web-clipper/llm-wiki-clippings.json +1 -1
- package/templates/web-clipper/readme.txt +13 -13
- package/dist/sources-QTQSZMST.js +0 -9
package/dist/skillwiki-mcp.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runSkillwikiMcpStdio
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-6X6PPQNI.js";
|
|
5
5
|
import "./chunk-7I2TPIV5.js";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-KX5Y3GSX.js";
|
|
7
|
+
import "./chunk-QU2CKXM4.js";
|
|
8
|
+
import "./chunk-WPJHDRTP.js";
|
|
9
|
+
import "./chunk-NA3TZ4JN.js";
|
|
10
|
+
import "./chunk-5MV5SSRM.js";
|
|
11
|
+
import "./chunk-R2DJ7IJ5.js";
|
|
12
12
|
|
|
13
13
|
// src/mcp-entry.ts
|
|
14
14
|
runSkillwikiMcpStdio().catch((error) => {
|
|
@@ -1067,28 +1067,33 @@ snapshot_post_sync_log_append_race_detected() {
|
|
|
1067
1067
|
# delete-intent reconciliation, re-read the current store, and re-run the
|
|
1068
1068
|
# existing exact worktree parity and semantic preview gates. Returns 0 only when
|
|
1069
1069
|
# the recovery converged; the caller refuses (without a second retry) otherwise.
|
|
1070
|
-
|
|
1070
|
+
# reason is log-append (store log is a strict prefix extension) or
|
|
1071
|
+
# semantic-preview (worktree matches store but preview reports index/log drift).
|
|
1072
|
+
snapshot_retry_sync_after_projection_race() {
|
|
1071
1073
|
local context="${1:-post-sync}"
|
|
1074
|
+
local reason="${2:-log-append}"
|
|
1072
1075
|
if ! rclone sync "$CLOUD_REMOTE" "$SNAPSHOT_WORKTREE" "${RCLONE_OPTS[@]}" --stats 10s 2>&1 | tee "$RCLONE_LOG"; then
|
|
1073
|
-
log "ERROR: $context
|
|
1076
|
+
log "ERROR: $context $reason race retry rclone sync failed"
|
|
1074
1077
|
tail -50 "$RCLONE_LOG" >> "$LOG_FILE" 2>/dev/null || true
|
|
1075
1078
|
rm -f "$RCLONE_LOG"
|
|
1076
1079
|
return 1
|
|
1077
1080
|
fi
|
|
1078
1081
|
rm -f "$RCLONE_LOG"
|
|
1079
|
-
log "post-sync
|
|
1082
|
+
log "post-sync $reason race detected; performed one additional rclone sync context=$context"
|
|
1080
1083
|
if ! snapshot_reconcile_delete_intents; then
|
|
1081
|
-
log "ERROR: $context
|
|
1084
|
+
log "ERROR: $context $reason race retry delete-intent reconciliation failed"
|
|
1082
1085
|
return 1
|
|
1083
1086
|
fi
|
|
1084
1087
|
snapshot_gate_projection_candidate \
|
|
1085
|
-
"FAIL $context
|
|
1086
|
-
"FAIL $context
|
|
1088
|
+
"FAIL $context $reason race retry projection expectation refresh; snapshot promotion refused" \
|
|
1089
|
+
"FAIL $context $reason race retry projection candidate verification; snapshot promotion refused"
|
|
1087
1090
|
}
|
|
1088
1091
|
|
|
1089
|
-
# Post-sync projection gate with at most one
|
|
1090
|
-
#
|
|
1091
|
-
#
|
|
1092
|
+
# Post-sync projection gate with at most one recoverable-race re-sync.
|
|
1093
|
+
# Recoverable shapes are a store-ahead log append, or exact worktree==store
|
|
1094
|
+
# byte parity whose semantic preview still reports index/log drift (a late
|
|
1095
|
+
# typed page whose matching index.md has not landed yet). Any other mismatch,
|
|
1096
|
+
# or a retry that does not converge, is the terminal refusal.
|
|
1092
1097
|
snapshot_gate_projection_candidate_with_race_retry() {
|
|
1093
1098
|
local context="${1:-post-sync}"
|
|
1094
1099
|
local refresh_fail="$2"
|
|
@@ -1097,14 +1102,17 @@ snapshot_gate_projection_candidate_with_race_retry() {
|
|
|
1097
1102
|
log "$refresh_fail"
|
|
1098
1103
|
return 1
|
|
1099
1104
|
fi
|
|
1100
|
-
# Exact byte parity is the ordinary path. Its semantic preview is terminal:
|
|
1101
|
-
# a later append must not turn a preview failure into a retry.
|
|
1102
1105
|
if [ -z "$PROJECTION_STATE_DIR" ] \
|
|
1103
1106
|
|| { cmp -s "$PROJECTION_STATE_DIR/expected-index.md" "$SNAPSHOT_WORKTREE/index.md" \
|
|
1104
1107
|
&& cmp -s "$PROJECTION_STATE_DIR/expected-log.md" "$SNAPSHOT_WORKTREE/log.md"; }; then
|
|
1105
1108
|
if snapshot_verify_projection_candidate; then
|
|
1106
1109
|
return 0
|
|
1107
1110
|
fi
|
|
1111
|
+
# Exact byte parity with a drifting preview is the page-vs-index race:
|
|
1112
|
+
# retry once. A later append must not get a second retry after this.
|
|
1113
|
+
if snapshot_retry_sync_after_projection_race "$context" "semantic-preview"; then
|
|
1114
|
+
return 0
|
|
1115
|
+
fi
|
|
1108
1116
|
log "$verify_fail"
|
|
1109
1117
|
return 1
|
|
1110
1118
|
fi
|
|
@@ -1113,7 +1121,7 @@ snapshot_gate_projection_candidate_with_race_retry() {
|
|
|
1113
1121
|
log "$verify_fail"
|
|
1114
1122
|
return 1
|
|
1115
1123
|
fi
|
|
1116
|
-
if
|
|
1124
|
+
if snapshot_retry_sync_after_projection_race "$context" "log-append"; then
|
|
1117
1125
|
return 0
|
|
1118
1126
|
fi
|
|
1119
1127
|
log "$verify_fail"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillwiki",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.110",
|
|
4
4
|
"skills": "./",
|
|
5
5
|
"description": "Project-aware Karpathy-style knowledge base for Claude Code: 22 prompt-only skills (wiki-*, proj-*, using-skillwiki, skillwiki-mcp, skillwiki-connect) backed by the deterministic `skillwiki` CLI.",
|
|
6
6
|
"author": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillwiki",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.110",
|
|
4
4
|
"description": "Project-aware Karpathy-style knowledge base: 22 prompt-only skills (wiki-*, proj-*, using-skillwiki, skillwiki-mcp, skillwiki-connect) backed by HTTP MCP wiki_capture.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "karlorz"
|
package/skills/package.json
CHANGED
|
@@ -68,6 +68,14 @@ skillwiki connect --from-stdin --dry-run
|
|
|
68
68
|
|
|
69
69
|
Doctor on an MCP-only leaf (no vault + token present + vault-sync not installed) treats missing `WIKI_PATH` as info, not an init cluster.
|
|
70
70
|
|
|
71
|
+
## Windows MCP-only leaves
|
|
72
|
+
|
|
73
|
+
- Do not configure an optional Git mirror as `WIKI_PATH`: CLI `skillwiki query` reads that local mirror, not HTTP MCP. Use the advertised `wiki_query` tool for live reads and `wiki_context` for active work.
|
|
74
|
+
- User config home resolves from a nonblank explicit home, then `HOME`, `USERPROFILE`, and the OS home directory. Empty or unset `HOME` does not require persisting a workaround environment variable. `skillwiki config path` and doctor's config-file row show the resolved absolute path.
|
|
75
|
+
- If the npm-generated PowerShell launcher fails or interrupts a command sequence, use `skillwiki.cmd config path` and `skillwiki.cmd doctor --check-mcp`, or invoke the installed `dist/cli.js` with Node. Do not edit generated shims or infer a SkillWiki defect without inspecting the failing wrapper.
|
|
76
|
+
- POSIX mode `0600` is not proof of a restrictive Windows ACL. The operator must keep the user config private. If a harness blocks attachment/stdin credential transfer, stop and request operator-controlled configuration of that resolved file with restricted access; never automatically bypass the harness, print the token, or store it in a repo or Drive.
|
|
77
|
+
- Record CLI/plugin/daemon versions separately when investigating drift. A scheduled notifier is not evidence that an upgrade completed; use an explicit operator-approved upgrade and restart the client when delivery includes installation changes.
|
|
78
|
+
|
|
71
79
|
## Stop conditions
|
|
72
80
|
|
|
73
81
|
- A non-local-only SkillWiki connector already authenticates.
|
|
@@ -45,10 +45,18 @@ Check the successful write receipt's `vault_id` against the intended vault befor
|
|
|
45
45
|
|
|
46
46
|
## Reads
|
|
47
47
|
|
|
48
|
+
CLI `skillwiki query` reads a local configured vault; it does not forward to HTTP MCP. On an MCP-only leaf, leave `WIKI_PATH` unset and use the advertised MCP `wiki_query` for live reads. Optional Git mirrors are read-only snapshots and may lag the live writer.
|
|
49
|
+
|
|
48
50
|
Local `~/wiki` (or `skillwiki path`) is fine for reads. MCP read tools are optional. Prefer ordinary file reads of the local mirror. Frozen-leaf agents should use HTTP `wiki_sources_pending`, `wiki_lint_summary`, `wiki_stale`, `wiki_compile_status`, and `wiki_reviews` instead of local CLI commands when those tools are advertised.
|
|
49
51
|
|
|
50
52
|
`wiki_query` is typed knowledge only unless `scope` is `work` or `all`. For recent progress, key projects, or to-dos, feature-detect and call `wiki_progress`; apply `project`, `host`, or `agent_role` filters when requested, and present `recent_progress`, `key_projects`, and `todos` as complete bullet lists. For queued work, doctor, plugin-drift, or MCP diagnose questions, call `wiki_context` first (active_work) or pass `scope: "work"` / `"all"`. Do not treat a top typed packet hit as the live work queue.
|
|
51
53
|
|
|
54
|
+
## Bridge diagnostics
|
|
55
|
+
|
|
56
|
+
Use a protocol SDK rather than copying a one-line SSE parser. SkillWiki diagnostic clients use the existing MCP TypeScript SDK to validate initialization, negotiate the protocol, send `notifications/initialized`, carry optional session IDs and negotiated protocol headers, and parse JSON or SSE (including multiline data). Empty HTTP 202 bodies acknowledge notifications/responses, not a successful initialize result. Doctor/connect probes have a 10-second overall deadline per connection and close their transports without terminating the server session.
|
|
57
|
+
|
|
58
|
+
Treat a missing/invalid initialize result, authentication refusal, or timeout as a failed handshake; do not proceed to tools calls merely because the HTTP status is successful. Preserve bearer redaction in all diagnostics.
|
|
59
|
+
|
|
52
60
|
## Errors
|
|
53
61
|
|
|
54
62
|
Report handshake, capture, and append failures literally. If tools are missing after a 401 or `missing_prereq`, stop and tell the operator to set `SKILLWIKI_MCP_TOKEN` via process env, host Configure, or `skillwiki connect --from-file` (unknown agents; never paste-into-chat), run `grok plugin update skillwiki`, and start a new session. Over SSH, treat an OAuth login URL the same way: report `headless_oauth_loopback` and stop. Do not fall back to local `raw/transcripts/` writes.
|
|
@@ -183,7 +183,7 @@ If the vault has `.WIKI_GIT_FROZEN`:
|
|
|
183
183
|
## Skill Map
|
|
184
184
|
| Skill | When to Invoke |
|
|
185
185
|
|-------|----------------|
|
|
186
|
-
| `wiki-init` | Bootstrap a vault and install `_Templates/web-clipper/llm-wiki-clippings.json` plus import guidance |
|
|
186
|
+
| `wiki-init` | Bootstrap a vault and install `_Templates/web-clipper/llm-wiki-clippings.json` plus import guidance. File-level clips use a dedicated `~/Obsidian/clip-outbox` vault, not `~/wiki`; `skillwiki doctor` reports clip-channel rows; `wiki_capture` is not clip ingress. |
|
|
187
187
|
| `wiki-ingest` | Convert URLs, files, or pasted text into typed-knowledge pages |
|
|
188
188
|
| `wiki-query` | Search typed knowledge by default; work-queue / doctor / MCP diagnose questions use `wiki_context` or `--scope work` / `--scope all`; explicitly requested fresh/raw evidence uses the separate pending channel |
|
|
189
189
|
| `wiki-lint` | Vault health and lint checks; use `health` for whole-system reports and `lint --summary` for bounded lint buckets |
|
|
@@ -29,17 +29,18 @@ None for the first run.
|
|
|
29
29
|
`skillwiki init --target <dir> --domain existing --write-gitignore`.
|
|
30
30
|
6. Report the installed Web Clipper assets at
|
|
31
31
|
`_Templates/web-clipper/llm-wiki-clippings.json` and
|
|
32
|
-
`_Templates/web-clipper/readme.txt`.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
embeds
|
|
32
|
+
`_Templates/web-clipper/readme.txt`. For the file-level clip channel, create
|
|
33
|
+
or select the dedicated Obsidian vault `~/Obsidian/clip-outbox` (never
|
|
34
|
+
`~/wiki`), with `raw/articles` and `raw/assets`, attachment folder
|
|
35
|
+
`raw/assets`. Tell the user to open Obsidian Web Clipper Settings, import the
|
|
36
|
+
JSON, select that outbox vault, keep **Add to Obsidian**, and repeat the
|
|
37
|
+
import for every browser profile. Re-init preserves existing customized
|
|
38
|
+
copies, including short files. A new package version never silently updates
|
|
39
|
+
browser extension storage.
|
|
40
|
+
7. Explain that the generic template preserves `{{content}}`. The clip-outbox
|
|
41
|
+
worker localizes required v1 HTTPS images before freeze, writes
|
|
42
|
+
`![[raw/assets/...]]` embeds, and uploads `raw/assets/<capture-id>/note.md`.
|
|
43
|
+
`wiki_capture` is not clip ingress. Never use `.txt` as the only index.
|
|
43
44
|
8. **Suggest first sources.** Propose 3–5 initial sources (URLs, papers, articles) appropriate to the domain. Prompt the user to provide the first one to ingest, then hand off to wiki-ingest.
|
|
44
45
|
|
|
45
46
|
## Stop conditions
|
|
@@ -68,6 +68,14 @@ skillwiki connect --from-stdin --dry-run
|
|
|
68
68
|
|
|
69
69
|
Doctor on an MCP-only leaf (no vault + token present + vault-sync not installed) treats missing `WIKI_PATH` as info, not an init cluster.
|
|
70
70
|
|
|
71
|
+
## Windows MCP-only leaves
|
|
72
|
+
|
|
73
|
+
- Do not configure an optional Git mirror as `WIKI_PATH`: CLI `skillwiki query` reads that local mirror, not HTTP MCP. Use the advertised `wiki_query` tool for live reads and `wiki_context` for active work.
|
|
74
|
+
- User config home resolves from a nonblank explicit home, then `HOME`, `USERPROFILE`, and the OS home directory. Empty or unset `HOME` does not require persisting a workaround environment variable. `skillwiki config path` and doctor's config-file row show the resolved absolute path.
|
|
75
|
+
- If the npm-generated PowerShell launcher fails or interrupts a command sequence, use `skillwiki.cmd config path` and `skillwiki.cmd doctor --check-mcp`, or invoke the installed `dist/cli.js` with Node. Do not edit generated shims or infer a SkillWiki defect without inspecting the failing wrapper.
|
|
76
|
+
- POSIX mode `0600` is not proof of a restrictive Windows ACL. The operator must keep the user config private. If a harness blocks attachment/stdin credential transfer, stop and request operator-controlled configuration of that resolved file with restricted access; never automatically bypass the harness, print the token, or store it in a repo or Drive.
|
|
77
|
+
- Record CLI/plugin/daemon versions separately when investigating drift. A scheduled notifier is not evidence that an upgrade completed; use an explicit operator-approved upgrade and restart the client when delivery includes installation changes.
|
|
78
|
+
|
|
71
79
|
## Stop conditions
|
|
72
80
|
|
|
73
81
|
- A non-local-only SkillWiki connector already authenticates.
|
|
@@ -45,10 +45,18 @@ Check the successful write receipt's `vault_id` against the intended vault befor
|
|
|
45
45
|
|
|
46
46
|
## Reads
|
|
47
47
|
|
|
48
|
+
CLI `skillwiki query` reads a local configured vault; it does not forward to HTTP MCP. On an MCP-only leaf, leave `WIKI_PATH` unset and use the advertised MCP `wiki_query` for live reads. Optional Git mirrors are read-only snapshots and may lag the live writer.
|
|
49
|
+
|
|
48
50
|
Local `~/wiki` (or `skillwiki path`) is fine for reads. MCP read tools are optional. Prefer ordinary file reads of the local mirror. Frozen-leaf agents should use HTTP `wiki_sources_pending`, `wiki_lint_summary`, `wiki_stale`, `wiki_compile_status`, and `wiki_reviews` instead of local CLI commands when those tools are advertised.
|
|
49
51
|
|
|
50
52
|
`wiki_query` is typed knowledge only unless `scope` is `work` or `all`. For recent progress, key projects, or to-dos, feature-detect and call `wiki_progress`; apply `project`, `host`, or `agent_role` filters when requested, and present `recent_progress`, `key_projects`, and `todos` as complete bullet lists. For queued work, doctor, plugin-drift, or MCP diagnose questions, call `wiki_context` first (active_work) or pass `scope: "work"` / `"all"`. Do not treat a top typed packet hit as the live work queue.
|
|
51
53
|
|
|
54
|
+
## Bridge diagnostics
|
|
55
|
+
|
|
56
|
+
Use a protocol SDK rather than copying a one-line SSE parser. SkillWiki diagnostic clients use the existing MCP TypeScript SDK to validate initialization, negotiate the protocol, send `notifications/initialized`, carry optional session IDs and negotiated protocol headers, and parse JSON or SSE (including multiline data). Empty HTTP 202 bodies acknowledge notifications/responses, not a successful initialize result. Doctor/connect probes have a 10-second overall deadline per connection and close their transports without terminating the server session.
|
|
57
|
+
|
|
58
|
+
Treat a missing/invalid initialize result, authentication refusal, or timeout as a failed handshake; do not proceed to tools calls merely because the HTTP status is successful. Preserve bearer redaction in all diagnostics.
|
|
59
|
+
|
|
52
60
|
## Errors
|
|
53
61
|
|
|
54
62
|
Report handshake, capture, and append failures literally. If tools are missing after a 401 or `missing_prereq`, stop and tell the operator to set `SKILLWIKI_MCP_TOKEN` via process env, host Configure, or `skillwiki connect --from-file` (unknown agents; never paste-into-chat), run `grok plugin update skillwiki`, and start a new session. Over SSH, treat an OAuth login URL the same way: report `headless_oauth_loopback` and stop. Do not fall back to local `raw/transcripts/` writes.
|
|
@@ -183,7 +183,7 @@ If the vault has `.WIKI_GIT_FROZEN`:
|
|
|
183
183
|
## Skill Map
|
|
184
184
|
| Skill | When to Invoke |
|
|
185
185
|
|-------|----------------|
|
|
186
|
-
| `wiki-init` | Bootstrap a vault and install `_Templates/web-clipper/llm-wiki-clippings.json` plus import guidance |
|
|
186
|
+
| `wiki-init` | Bootstrap a vault and install `_Templates/web-clipper/llm-wiki-clippings.json` plus import guidance. File-level clips use a dedicated `~/Obsidian/clip-outbox` vault, not `~/wiki`; `skillwiki doctor` reports clip-channel rows; `wiki_capture` is not clip ingress. |
|
|
187
187
|
| `wiki-ingest` | Convert URLs, files, or pasted text into typed-knowledge pages |
|
|
188
188
|
| `wiki-query` | Search typed knowledge by default; work-queue / doctor / MCP diagnose questions use `wiki_context` or `--scope work` / `--scope all`; explicitly requested fresh/raw evidence uses the separate pending channel |
|
|
189
189
|
| `wiki-lint` | Vault health and lint checks; use `health` for whole-system reports and `lint --summary` for bounded lint buckets |
|
|
@@ -29,17 +29,18 @@ None for the first run.
|
|
|
29
29
|
`skillwiki init --target <dir> --domain existing --write-gitignore`.
|
|
30
30
|
6. Report the installed Web Clipper assets at
|
|
31
31
|
`_Templates/web-clipper/llm-wiki-clippings.json` and
|
|
32
|
-
`_Templates/web-clipper/readme.txt`.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
embeds
|
|
32
|
+
`_Templates/web-clipper/readme.txt`. For the file-level clip channel, create
|
|
33
|
+
or select the dedicated Obsidian vault `~/Obsidian/clip-outbox` (never
|
|
34
|
+
`~/wiki`), with `raw/articles` and `raw/assets`, attachment folder
|
|
35
|
+
`raw/assets`. Tell the user to open Obsidian Web Clipper Settings, import the
|
|
36
|
+
JSON, select that outbox vault, keep **Add to Obsidian**, and repeat the
|
|
37
|
+
import for every browser profile. Re-init preserves existing customized
|
|
38
|
+
copies, including short files. A new package version never silently updates
|
|
39
|
+
browser extension storage.
|
|
40
|
+
7. Explain that the generic template preserves `{{content}}`. The clip-outbox
|
|
41
|
+
worker localizes required v1 HTTPS images before freeze, writes
|
|
42
|
+
`![[raw/assets/...]]` embeds, and uploads `raw/assets/<capture-id>/note.md`.
|
|
43
|
+
`wiki_capture` is not clip ingress. Never use `.txt` as the only index.
|
|
43
44
|
8. **Suggest first sources.** Propose 3–5 initial sources (URLs, papers, articles) appropriate to the domain. Prompt the user to provide the first one to ingest, then hand off to wiki-ingest.
|
|
44
45
|
|
|
45
46
|
## Stop conditions
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>Label</key>
|
|
6
|
+
<string>com.karlchow.skillwiki-clip-outbox</string>
|
|
7
|
+
<key>ProgramArguments</key>
|
|
8
|
+
<array>
|
|
9
|
+
<string>/usr/local/bin/skillwiki</string>
|
|
10
|
+
<string>clip-outbox</string>
|
|
11
|
+
<string>watch</string>
|
|
12
|
+
</array>
|
|
13
|
+
<key>KeepAlive</key>
|
|
14
|
+
<true/>
|
|
15
|
+
<key>RunAtLoad</key>
|
|
16
|
+
<true/>
|
|
17
|
+
<key>WatchPaths</key>
|
|
18
|
+
<array>
|
|
19
|
+
<string>/Users/REPLACE/Obsidian/clip-outbox/raw/articles</string>
|
|
20
|
+
</array>
|
|
21
|
+
</dict>
|
|
22
|
+
</plist>
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
SkillWiki Obsidian Web Clipper template
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Dedicated clip-outbox (v1):
|
|
4
|
+
1. Create or select an Obsidian vault at ~/Obsidian/clip-outbox (outside ~/wiki).
|
|
5
|
+
2. Create raw/articles and raw/assets in that vault. Set the attachment folder to raw/assets.
|
|
6
|
+
3. Open Obsidian Web Clipper Settings in the browser profile that will capture.
|
|
7
|
+
4. Import llm-wiki-clippings.json.
|
|
8
|
+
5. Select the clip-outbox vault. Keep Add to Obsidian. Do not select ~/wiki.
|
|
9
|
+
6. Confirm the destination path is raw/articles and the behavior is Create.
|
|
10
|
+
7. Repeat the import for every browser profile. Shipping a new JSON does not update extension storage.
|
|
11
|
+
8. Verify with a scratch capture and a repeated same-title save before enabling delivery.
|
|
7
12
|
|
|
8
|
-
The generic template preserves Web Clipper's {{content}} output.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
For attended local asset materialization, an agent may choose any URL-friendly
|
|
13
|
-
path under raw/assets/. Write the asset first, use an explicit vault-qualified
|
|
14
|
-
Obsidian embed such as ![[raw/assets/example/diagram.png]], verify the target and
|
|
15
|
-
preview, and only then finalize the new raw capture. Referenced asset paths are
|
|
16
|
-
stable after capture.
|
|
13
|
+
The generic template preserves Web Clipper's {{content}} output. The clip-outbox
|
|
14
|
+
worker localizes remote HTTPS images, writes explicit ![[raw/assets/...]] embeds,
|
|
15
|
+
and uploads a sibling Markdown index at raw/assets/<capture-id>/note.md. Never use
|
|
16
|
+
.txt as the only index. wiki_capture is not clip or image ingress.
|