plugins/d-nd-core/skills/paper-deployer/SKILL.md
Deploy paper content from configured site_ready files to d-nd.com VPS. Handles md-to-HTML conversion, bilingual merge, figure path resolution, and pages.json update.
npx skillsauth add grazianoguiducci/d-nd-seed paper-deployerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Deploy updated paper content from a configured papers source to the live site.
${DND_PAPERS_DIR}/site_ready/paper_X_IT.md and paper_X_EN.md${DND_PAPERS_DIR}/figures/ (already converted from PDF)ls ${DND_PAPERS_DIR}/site_ready/paper_*_{IT,EN}.md 2>/dev/null
ls ${DND_PAPERS_DIR}/figures/*.svg 2>/dev/null | wc -l
The conversion pipeline:
$...$ for MathJax) to <figure><img> HTMLfig_C1_*.svg → fig_C1_actual_name.svg)content, EN → content_enscp ${DND_PAPERS_DIR}/figures/*.svg root@${DND_VPS_IP}:/opt/d-nd_com_site/papers/figures/
# The pages.json served by nginx is at /opt/site_repo/data/pages.json
# The container bind-mounts this same file
# Update in place — changes are immediately live (nginx no-cache)
ssh root@${DND_VPS_IP} 'python3 << "PYEOF"
import json
with open("/opt/site_repo/data/pages.json") as f:
data = json.load(f)
# ... merge logic here ...
with open("/opt/site_repo/data/pages.json", "w") as f:
json.dump(data, f, ensure_ascii=False)
PYEOF'
# Check the deployed content
ssh root@${DND_VPS_IP} 'python3 -c "
import json
with open(\"/opt/site_repo/data/pages.json\") as f:
data = json.load(f)
for p in data[\"pages\"]:
if \"paper\" in p.get(\"slug\",\"\").lower():
ci=len(p.get(\"content\",\"\"))
ce=len(p.get(\"content_en\",\"\"))
print(f\"{p[\"slug\"]} IT:{ci} EN:{ce}\")
"'
/opt/site_repo/data/pages.json (served by nginx, authoritative) and /opt/d-nd_com_site/data/pages.json (bundled in dist, fallback). Always update site_repo./opt/site_repo is mounted as /app/site in the container. They share the same filesystem.PageComponent.tsx) converts <p></p> to <figure> at render time. But prefer proper HTML in source.$ARGUMENTS
testing
Closure reflection protocol. After a significant work block concludes (feature shipped, session ending, major commit landed, cross-node coordination resolved), runs a 10-question interview that extracts meaning, impact, and next questions — then emits multiple audience-specific artifacts (changelog, external editorial, AI integration docs, memory crystal, backlog seed). Turns implicit maturation into explicit narrative. Use at the end of meaningful work, not after trivial edits.
testing
The neutral form of the D-ND method. Meta-skill that recognizes context and orients toward the right specialization (cec, autologica, cascade, assertion-verifier, etc.). Activate at the start of a non-trivial work block or when input matches trigger words ('where are we', 'what here', 'orchestrate', 'connect', 'sieve this').
development
Five mechanical gates for any content publish pipeline with CMS + rendering layers. Prevents false security: 'API returned 200' does not mean 'visitor sees clean content'. Use when writing content to a multi-layer serving system (CMS API, static files, prerendered HTML, cached copies).
testing
Multi-node consultation protocol for high-leverage decisions. Dispatches the same question to N independent LLM/agent nodes in isolation, then synthesizes their responses into a summa that exposes convergence (high-confidence claims), dissensus (real uncertainty zones), and emergent points (insights no single node produced). Reduces single-node training bias. Supports recursive escalation for stable-state convergence. Use for decisions that propagate via A14 cascade — seed updates, crystallizations, advisory→mechanical promotions, high-visibility copy, lab result interpretation.