@ztffn/presentation-generator-plugin 1.5.0 → 1.6.0
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "presentation-generator",
|
|
3
3
|
"description": "Generate complete graph-based presentations from natural language briefs and project documents. Pipeline: content extraction, narrative design, deterministic graph generation, and visual styling.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.6.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Huma"
|
|
7
7
|
},
|
package/DEFERRED-FIXES.md
CHANGED
|
@@ -4,6 +4,18 @@ Issues that require architectural changes and should be addressed in targeted, f
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
## v1.6.0 fixes ✓ resolved
|
|
8
|
+
|
|
9
|
+
**UX: Phase 1 bash command visible in permission dialog**
|
|
10
|
+
The Phase 1 `find` one-liner (shipped in v1.5.0) still appeared as a bash
|
|
11
|
+
permission prompt. Added `inject-plugin-root.sh` — a `PostToolUse` hook on the
|
|
12
|
+
`Skill` tool that silently resolves PLUGIN_ROOT and injects it as
|
|
13
|
+
`additionalContext` when the orchestrator skill loads. Phase 1 now reads the
|
|
14
|
+
injected value from context with no bash at all. Cowork fallback uses two
|
|
15
|
+
ordered `Read` probes of known install paths — also no bash.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
7
19
|
## v1.5.0 fixes ✓ resolved
|
|
8
20
|
|
|
9
21
|
**Bug: Style agent always launched as `undefined`**
|
package/hooks/hooks.json
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# inject-plugin-root.sh — PostToolUse hook for Skill tool.
|
|
3
|
+
# Fires after the presentation-generator skill loads and injects
|
|
4
|
+
# PLUGIN_ROOT into additionalContext so the orchestrator never needs bash.
|
|
5
|
+
|
|
6
|
+
INPUT=$(cat)
|
|
7
|
+
SKILL=$(echo "$INPUT" | jq -r '.tool_input.skill // .tool_input.name // empty')
|
|
8
|
+
|
|
9
|
+
# Only run for the presentation-generator skill
|
|
10
|
+
case "$SKILL" in
|
|
11
|
+
*presentation-generator*) ;;
|
|
12
|
+
*) exit 0 ;;
|
|
13
|
+
esac
|
|
14
|
+
|
|
15
|
+
# Locate the plugin root
|
|
16
|
+
PLUGIN_ROOT=$(find -L .claude ~/.claude \
|
|
17
|
+
-path "*/presentation-generator/scripts/outline_to_graph.py" \
|
|
18
|
+
2>/dev/null | head -1 | sed 's|/scripts/outline_to_graph.py||')
|
|
19
|
+
|
|
20
|
+
[ -z "$PLUGIN_ROOT" ] && exit 0
|
|
21
|
+
|
|
22
|
+
CONTEXT="PLUGIN_ROOT: $PLUGIN_ROOT"
|
|
23
|
+
ESCAPED=$(echo "$CONTEXT" | python3 -c "import sys,json; print(json.dumps(sys.stdin.read()))")
|
|
24
|
+
|
|
25
|
+
cat <<EOF
|
|
26
|
+
{
|
|
27
|
+
"hookSpecificOutput": {
|
|
28
|
+
"hookEventName": "PostToolUse",
|
|
29
|
+
"additionalContext": $ESCAPED
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
EOF
|
package/package.json
CHANGED
|
@@ -15,16 +15,24 @@ You are an orchestrator. Execute these 7 phases in order. Do not skip phases. Do
|
|
|
15
15
|
|
|
16
16
|
## Phase 1 — Setup
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
**Locate the plugin root.**
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
First, check if your context already contains a line beginning with `PLUGIN_ROOT:`
|
|
21
|
+
(injected automatically by a hook when running in Claude Code). If found, use that
|
|
22
|
+
value directly — you are done with this step.
|
|
23
|
+
|
|
24
|
+
If not found (Cowork mode, or hook not active), use the **Read tool** to probe
|
|
25
|
+
these paths in order — stop at the first one that returns file contents:
|
|
26
|
+
|
|
27
|
+
1. `.claude/plugins/presentation-generator/scripts/outline_to_graph.py`
|
|
28
|
+
2. `~/.claude/plugins/presentation-generator/scripts/outline_to_graph.py`
|
|
29
|
+
|
|
30
|
+
PLUGIN_ROOT is everything before `/scripts/outline_to_graph.py` in the successful
|
|
31
|
+
path (e.g. `.claude/plugins/presentation-generator`).
|
|
23
32
|
|
|
24
|
-
|
|
25
|
-
If the output is empty, the plugin is not installed — stop and tell the user.
|
|
33
|
+
If neither Read succeeds, stop and tell the user the plugin is not installed.
|
|
26
34
|
|
|
27
|
-
Save
|
|
35
|
+
Save PLUGIN_ROOT — you need it for every later phase.
|
|
28
36
|
|
|
29
37
|
Then extract from the user's message:
|
|
30
38
|
- **TOPIC**: what is being presented
|