skillwiki 0.10.68 → 0.10.70

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skillwiki",
3
- "version": "0.10.68",
3
+ "version": "0.10.70",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "skillwiki": "dist/cli.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "skillwiki",
3
- "version": "0.10.68",
3
+ "version": "0.10.70",
4
4
  "skills": "./",
5
- "description": "Project-aware Karpathy-style knowledge base for Claude Code: 20 prompt-only skills (wiki-*, proj-*, using-skillwiki) backed by the deterministic `skillwiki` CLI.",
5
+ "description": "Project-aware Karpathy-style knowledge base for Claude Code: 21 prompt-only skills (wiki-*, proj-*, using-skillwiki, skillwiki-mcp) backed by the deterministic `skillwiki` CLI.",
6
6
  "author": {
7
7
  "name": "karlorz",
8
8
  "url": "https://github.com/karlorz"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "skillwiki",
3
- "version": "0.10.68",
4
- "description": "Project-aware Karpathy-style knowledge base for Codex with 20 prompt-only skills backed by the deterministic skillwiki CLI.",
3
+ "version": "0.10.70",
4
+ "description": "Project-aware Karpathy-style knowledge base for Codex with 21 prompt-only skills backed by the deterministic skillwiki CLI.",
5
5
  "author": {
6
6
  "name": "karlorz",
7
7
  "url": "https://github.com/karlorz"
@@ -22,7 +22,7 @@
22
22
  "interface": {
23
23
  "displayName": "SkillWiki",
24
24
  "shortDescription": "Project-aware wiki skills for Codex agents",
25
- "longDescription": "20 prompt-only skills (wiki-*, proj-*, using-skillwiki) for deterministic, project-aware knowledge workflows.",
25
+ "longDescription": "21 prompt-only skills (wiki-*, proj-*, using-skillwiki, skillwiki-mcp) for deterministic, project-aware knowledge workflows.",
26
26
  "developerName": "karlorz",
27
27
  "category": "Productivity",
28
28
  "capabilities": [
@@ -0,0 +1,11 @@
1
+ {
2
+ "mcpServers": {
3
+ "skillwiki": {
4
+ "type": "http",
5
+ "url": "${SKILLWIKI_MCP_URL:-https://wiki.karldigi.dev/mcp}",
6
+ "headers": {
7
+ "Authorization": "Bearer ${SKILLWIKI_MCP_TOKEN}"
8
+ }
9
+ }
10
+ }
11
+ }
package/skills/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Prompt-only Markdown skills for Claude Code. Installed via `skillwiki install`
4
4
  or the Claude/Codex/Antigravity plugin packaging paths.
5
5
 
6
- Current package inventory: **20 skills**.
6
+ Current package inventory: **21 skills**.
7
7
 
8
8
  Publication policy: new or updated typed-knowledge and meta pages must use
9
9
  `skillwiki page publish` from a temporary draft, inspect its dry-run, and add
@@ -26,6 +26,7 @@ fixed papers/transcripts taxonomy.
26
26
  | `wiki-*` | `wiki-init`, `wiki-ingest`, `wiki-query`, `wiki-lint`, `wiki-crystallize`, `wiki-audit`, `wiki-archive`, `wiki-reingest`, `wiki-adapter-prd`, `wiki-add-task`, `wiki-sync`, `wiki-canvas`, `wiki-gate-plan-mode` |
27
27
  | `proj-*` | `proj-init`, `proj-work`, `proj-distill`, `proj-decide` |
28
28
  | onboarding | `using-skillwiki` |
29
+ | mcp | `skillwiki-mcp` |
29
30
 
30
31
  Verify the live inventory from source:
31
32
 
@@ -0,0 +1,11 @@
1
+ {
2
+ "mcpServers": {
3
+ "skillwiki": {
4
+ "type": "http",
5
+ "url": "https://wiki.karldigi.dev/mcp",
6
+ "headers": {
7
+ "Authorization": "Bearer ${env:SKILLWIKI_MCP_TOKEN}"
8
+ }
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "mcpServers": {
3
+ "skillwiki": {
4
+ "type": "http",
5
+ "url": "${SKILLWIKI_MCP_URL:-https://wiki.karldigi.dev/mcp}",
6
+ "headers": {
7
+ "Authorization": "Bearer ${SKILLWIKI_MCP_TOKEN}"
8
+ }
9
+ }
10
+ }
11
+ }
@@ -1,13 +1,18 @@
1
1
  {
2
2
  "name": "@skillwiki/skills",
3
- "version": "0.10.68",
3
+ "version": "0.10.70",
4
4
  "private": true,
5
5
  "files": [
6
6
  "wiki-*",
7
7
  "proj-*",
8
8
  "using-skillwiki",
9
+ "skillwiki-mcp",
9
10
  "skills",
10
11
  "agents",
12
+ "scripts",
13
+ "mcp.json",
14
+ ".mcp.json",
15
+ "cursor-cli-mcp.example.json",
11
16
  ".claude-plugin",
12
17
  ".codex-plugin",
13
18
  "hooks",
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env python3
2
+ """SkillWiki HTTP MCP plugin readiness probe.
3
+
4
+ Interface: probe(environ) -> {status, reasons, url, migrated, warnings}.
5
+ Does not write ~/.cursor/mcp.json, config.toml, or mcp.env.
6
+ Never prints SKILLWIKI_MCP_TOKEN.
7
+ """
8
+ from __future__ import annotations
9
+
10
+ import argparse
11
+ import json
12
+ import os
13
+ import sys
14
+ from typing import Mapping
15
+
16
+ PRODUCTION_MCP_URL = "https://wiki.karldigi.dev/mcp"
17
+ TOKEN_ENV = "SKILLWIKI_MCP_TOKEN"
18
+ URL_ENV = "SKILLWIKI_MCP_URL"
19
+
20
+
21
+ def _strip(value: str | None) -> str:
22
+ return (value or "").strip()
23
+
24
+
25
+ def probe(environ: Mapping[str, str] | None = None) -> dict:
26
+ source = os.environ if environ is None else environ
27
+ token = _strip(source.get(TOKEN_ENV))
28
+ url = _strip(source.get(URL_ENV))
29
+ warnings: list[str] = []
30
+ reasons: list[str] = []
31
+
32
+ if not token:
33
+ return {
34
+ "status": "missing_prereq",
35
+ "reasons": [f"{TOKEN_ENV} unset"],
36
+ "url": url or None,
37
+ "migrated": False,
38
+ "warnings": warnings,
39
+ }
40
+
41
+ migrated = False
42
+ if not url:
43
+ url = PRODUCTION_MCP_URL
44
+ migrated = True
45
+ reasons.append(f"{URL_ENV} empty; using {PRODUCTION_MCP_URL}")
46
+
47
+ return {
48
+ "status": "in_sync",
49
+ "reasons": reasons,
50
+ "url": url,
51
+ "migrated": migrated,
52
+ "warnings": warnings,
53
+ }
54
+
55
+
56
+ def apply(environ: dict[str, str] | None = None) -> dict:
57
+ """Apply the URL default to this process and Claude's env handoff only."""
58
+ target = os.environ if environ is None else environ
59
+ result = probe(target)
60
+ if result["status"] != "in_sync" or not result.get("migrated"):
61
+ return result
62
+ url = result["url"]
63
+ target[URL_ENV] = url
64
+ env_file = _strip(target.get("CLAUDE_ENV_FILE"))
65
+ if env_file:
66
+ with open(env_file, "a", encoding="utf-8") as handle:
67
+ handle.write(f"export {URL_ENV}={url}\n")
68
+ return result
69
+
70
+
71
+ def main(argv: list[str] | None = None) -> int:
72
+ parser = argparse.ArgumentParser(description="skillwiki HTTP MCP readiness probe")
73
+ parser.add_argument("--json", action="store_true", help="print JSON verdict")
74
+ parser.add_argument(
75
+ "--apply",
76
+ action="store_true",
77
+ help="set SKILLWIKI_MCP_URL in this child process and Claude's CLAUDE_ENV_FILE when TOKEN is set",
78
+ )
79
+ args = parser.parse_args(argv)
80
+ result = apply() if args.apply else probe()
81
+ print(json.dumps(result, separators=(",", ":")))
82
+ return 0 if result["status"] == "in_sync" else 2
83
+
84
+
85
+ if __name__ == "__main__":
86
+ sys.exit(main())
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: skillwiki-mcp
3
+ description: Use when capturing a note, idea, or bug into the wiki, appending log.md, or using wiki MCP tools. Writes via wiki_capture / wiki_log_append; never local raw/transcripts.
4
+ ---
5
+
6
+ # SkillWiki HTTP MCP
7
+
8
+ Use this skill to capture a note, idea, bug, or task into the wiki, append `log.md`, or call SkillWiki HTTP MCP tools.
9
+
10
+ SkillWiki captures are HTTP MCP only (`type: http`). Claude/Grok use `SKILLWIKI_MCP_URL` as an optional override and otherwise default to `https://wiki.karldigi.dev/mcp`. Every host requires an operator-provided bearer as `SKILLWIKI_MCP_TOKEN` before MCP load. Do not start a local stdio `skillwiki mcp` / `skillwiki-mcp` server for captures.
11
+
12
+ ## First-run readiness
13
+
14
+ - Resolve the installed plugin root from `GROK_PLUGIN_ROOT`, falling back to `CLAUDE_PLUGIN_ROOT`, and run `python3 "$PLUGIN_ROOT/scripts/check_readiness.py" --apply --json` before the first SkillWiki MCP call.
15
+ - `missing_prereq` means `SKILLWIKI_MCP_TOKEN` is absent from process environment; stop and ask for a bearer. Do not invent a stdio MCP.
16
+ - `in_sync` means the probe has a usable URL/token decision.
17
+ - A 401 is an MCP handshake failure, not a readiness-probe status. Report that the token is missing or rejected and stop.
18
+ - Grok SessionStart cannot inject the parent MCP environment. A restart cannot supply a missing token.
19
+ - Never auto-source `mcp.env` or auto-write `~/.cursor/mcp.json`, Grok `config.toml`, or `mcp.env`.
20
+ - Never print the bearer token.
21
+
22
+ ## Writes (captures-only)
23
+
24
+ On leaf hosts, wiki captures go through MCP. Do **not** write `raw/transcripts/` or `log.md` as local files.
25
+
26
+ 1. Call MCP `wiki_capture` with `kind` (`task` | `idea` | `bug` | `note`), `project`, `title`, and `content`. Optional `agent_note`.
27
+ 2. Call MCP `wiki_log_append` when a structural `log.md` line is needed. Pass append-only `content`. Do not rewrite log history.
28
+ 3. Write surface is captures-only. Do not call unpublished Tier 2 tools. Do not `git commit` / `wiki-push` against `~/wiki` for these captures.
29
+
30
+ ## Reads
31
+
32
+ Local `~/wiki` (or `skillwiki path`) is fine for reads. MCP read tools are optional. Prefer ordinary file reads of the local mirror.
33
+
34
+ ## Errors
35
+
36
+ Report handshake, capture, and append failures literally. If tools are missing after a 401 or `missing_prereq`, stop and tell the operator to export `SKILLWIKI_MCP_TOKEN`, run `grok plugin update skillwiki`, and start a new session. Do not fall back to local `raw/transcripts/` writes.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: skillwiki-mcp
3
+ description: Use when capturing a note, idea, or bug into the wiki, appending log.md, or using wiki MCP tools. Writes via wiki_capture / wiki_log_append; never local raw/transcripts.
4
+ ---
5
+
6
+ # SkillWiki HTTP MCP
7
+
8
+ Use this skill to capture a note, idea, bug, or task into the wiki, append `log.md`, or call SkillWiki HTTP MCP tools.
9
+
10
+ SkillWiki captures are HTTP MCP only (`type: http`). Claude/Grok use `SKILLWIKI_MCP_URL` as an optional override and otherwise default to `https://wiki.karldigi.dev/mcp`. Every host requires an operator-provided bearer as `SKILLWIKI_MCP_TOKEN` before MCP load. Do not start a local stdio `skillwiki mcp` / `skillwiki-mcp` server for captures.
11
+
12
+ ## First-run readiness
13
+
14
+ - Resolve the installed plugin root from `GROK_PLUGIN_ROOT`, falling back to `CLAUDE_PLUGIN_ROOT`, and run `python3 "$PLUGIN_ROOT/scripts/check_readiness.py" --apply --json` before the first SkillWiki MCP call.
15
+ - `missing_prereq` means `SKILLWIKI_MCP_TOKEN` is absent from process environment; stop and ask for a bearer. Do not invent a stdio MCP.
16
+ - `in_sync` means the probe has a usable URL/token decision.
17
+ - A 401 is an MCP handshake failure, not a readiness-probe status. Report that the token is missing or rejected and stop.
18
+ - Grok SessionStart cannot inject the parent MCP environment. A restart cannot supply a missing token.
19
+ - Never auto-source `mcp.env` or auto-write `~/.cursor/mcp.json`, Grok `config.toml`, or `mcp.env`.
20
+ - Never print the bearer token.
21
+
22
+ ## Writes (captures-only)
23
+
24
+ On leaf hosts, wiki captures go through MCP. Do **not** write `raw/transcripts/` or `log.md` as local files.
25
+
26
+ 1. Call MCP `wiki_capture` with `kind` (`task` | `idea` | `bug` | `note`), `project`, `title`, and `content`. Optional `agent_note`.
27
+ 2. Call MCP `wiki_log_append` when a structural `log.md` line is needed. Pass append-only `content`. Do not rewrite log history.
28
+ 3. Write surface is captures-only. Do not call unpublished Tier 2 tools. Do not `git commit` / `wiki-push` against `~/wiki` for these captures.
29
+
30
+ ## Reads
31
+
32
+ Local `~/wiki` (or `skillwiki path`) is fine for reads. MCP read tools are optional. Prefer ordinary file reads of the local mirror.
33
+
34
+ ## Errors
35
+
36
+ Report handshake, capture, and append failures literally. If tools are missing after a 401 or `missing_prereq`, stop and tell the operator to export `SKILLWIKI_MCP_TOKEN`, run `grok plugin update skillwiki`, and start a new session. Do not fall back to local `raw/transcripts/` writes.