Quick Start
1
Reload in a live session
2
Scan from another shell
praisonai skills reload is a cross-process scan, not a live-session refresh — a separate process has no running session to reload. Use it to confirm a praisonai skills install <url> or a SKILL.md edit landed on disk. To refresh a running session, call SkillManager.reload() in-process.How It Works
reload() re-scans the same directories the manager last discovered, diffs the fresh scan against the in-memory registry, and swaps the index atomically.
Changes take effect on the next turn via to_prompt(), never mid-turn — so a reload is prompt-cache-safe.
Choosing where to reload from
Pick the live primitive for a running session; pick the CLI to check disk from another shell.What Reload Guarantees
Behaviour under edge cases
Edit between discover() and the first reload() is caught
Edit between discover() and the first reload() is caught
The SKILL.md
mtime baseline is recorded at load time, so an edit made after discover() but before the first reload() still shows up as changed.Skills added via add_skill() are preserved
Skills added via add_skill() are preserved
A skill registered out-of-band with
add_skill() was never part of a discovery scan, so reload() leaves it untouched and never lists it under removed.Telemetry-only rewrites are ignored
Telemetry-only rewrites are ignored
Recording a use rewrites SKILL.md frontmatter, but the manager refreshes its own
mtime baseline afterwards — so the next reload() does not report the skill as changed, and the same activated object is kept.Removed skills are deactivated; unchanged keep activation
Removed skills are deactivated; unchanged keep activation
A deleted skill directory is dropped and its cached
instructions cleared. Unchanged skills keep the same LoadedSkill instance, so activation and telemetry carry across the reload.reload() works with no prior discover()
reload() works with no prior discover()
Calling
reload() before any explicit discover() still returns a valid diff with the three keys — it simply scans the default sources.Common Patterns
Refresh after a skill install from a bot or gateway
Watch-and-reload while authoring a skill
Reload and confirm a specific skill is live
Best Practices
Call reload() at turn boundaries
Call reload() at turn boundaries
Reload is safe by design — the index swap never takes effect mid-turn — but calling it between turns keeps the mental model simple: the next
to_prompt() reflects the change.Report the diff to the user
Report the diff to the user
Surface
{added, changed, removed} after a reload so people see exactly what moved: +1 added / ~1 changed / -0 removed.Reload in-process, not from a subprocess
Reload in-process, not from a subprocess
praisonai skills reload scans disk in its own process and cannot refresh a parent session. To pick up new skills in a running agent, call SkillManager.reload() in that same process.Keep skill names stable across edits
Keep skill names stable across edits
Change detection keys on the skill name and its SKILL.md mtime. Renaming a skill reads as a
removed + added pair and drops its telemetry — prefer editing content over renaming so usage counts survive.Related
Create, edit, patch, and archive skills
Provenance, telemetry, archive/restore, rollback
Load SKILL.md skills on agents
Group related skills into reusable sets

