From duende-ecosystem
Manages Duende (IdentityServer, BFF, IdentityModel, OidcClient) docs lifecycle: scrape from source, validate index, refresh filesystem, rebuild-index, clear-cache.
npx claudepluginhub melodic-software/claude-code-plugins --plugin duende-ecosystemThis skill is limited to using the following tools:
Manage the Duende documentation lifecycle through a single consolidated skill. Covers IdentityServer, BFF, Access Token Management, IdentityModel, and OidcClient documentation.
Manages Duende Software documentation: storage, scraping from llms-full.txt, keyword/tag/natural language discovery, resolution, and index maintenance via scripts.
Manages Claude Code docs lifecycle: scrape official sources, validate index integrity/drift, refresh/rebuild index, clear cache. Invoke via /docs-ops <action>.
Manages Cursor documentation index lifecycle: scrape from llms.txt sources, validate integrity, refresh from filesystem, rebuild-index, clear-cache.
Share bugs, ideas, or general feedback.
Manage the Duende documentation lifecycle through a single consolidated skill. Covers IdentityServer, BFF, Access Token Management, IdentityModel, and OidcClient documentation.
| Action | Description |
|---|---|
scrape | Scrape documentation from llms-full.txt, then refresh and validate |
validate | Validate index integrity and detect drift (read-only) |
refresh | Refresh index from filesystem without scraping |
rebuild-index | Clear and immediately rebuild the search index |
clear-cache | Clear the search cache (lazy rebuild on next search) |
Parse $ARGUMENTS to determine the action. The first token is the action keyword. Remaining tokens are passed as options to the action handler.
Scrape all documentation from the Duende llms-full.txt source. This fetches all IdentityServer, BFF, Access Token Management, IdentityModel, and OidcClient documentation.
python "${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/scripts/core/scrape_docs.py"
python "${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/scripts/management/rebuild_index.py"
python "${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/scripts/management/manage_index.py" verify
Report the results of each step.
Run validation checks on the documentation index without making any modifications.
python "${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/scripts/management/manage_index.py" verify
python "${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/scripts/maintenance/validate_index.py"
python "${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/scripts/management/manage_index.py" count
Report the results of each validation step, highlighting any issues found.
Refresh the local index without re-scraping from the web. Use this when you've manually modified documentation files or need to rebuild the index.
python "${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/scripts/management/rebuild_index.py"
python "${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/scripts/management/manage_index.py" verify
python "${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/scripts/management/manage_index.py" count
Report the results of each step.
Clear and immediately rebuild the duende-docs search index. This is faster than clear-cache + waiting for next search because it triggers the rebuild immediately.
index.yaml or documentation filesgit pull with documentation changes| Action | Behavior | Search Availability |
|---|---|---|
clear-cache | Clears cache only | Rebuild on next search (lazy) |
rebuild-index | Clears + rebuilds | Immediate (eager) |
This action clears the Duende documentation search cache and immediately rebuilds the index.
First, check the current cache state. Report whether the cache exists, is valid, and when it was last built.
Unless the user passed --force, show a rebuild plan with the current cache state and ask for confirmation before proceeding. Explain that rebuilding takes a few seconds and search will be unavailable during the rebuild.
Once confirmed (or if --force was passed):
Report the new index statistics including document count and build time. Confirm that search is now available.
## Index Rebuilt
Successfully rebuilt Duende documentation search index.
**New index stats:**
- Documents: X
- Build time: Xms
**Search is now available.**
Clear the duende-docs search cache (inverted index). This forces the index to rebuild on the next documentation search.
index.yaml or documentation filesgit pull with documentation changesCheck if --force flag is present.
force_mode = "--force" in arguments (case-insensitive)
The duende-docs cache is located at:
${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/.cache/
Or via installed path:
~/.claude/plugins/cache/<marketplace>/duende-ecosystem/<version>/skills/duende-docs/.cache/
List the cache files:
| File | Purpose |
|---|---|
inverted_index.json | Search index |
cache_version.json | Hash-based validity tracking |
If cache directory doesn't exist or is empty, report: "Cache already clear. Nothing to do."
If NOT force_mode, present the cache clear plan:
## Cache Clear Plan
**Target:** Duende documentation search index
| File | Size |
|------|------|
| inverted_index.json | X.X MB |
| cache_version.json | 512 bytes |
**Total:** X.X MB
> **Note:** The search index will rebuild automatically on the next documentation search.
> For immediate rebuild, use the `rebuild-index` action after clearing.
**Proceed?** Reply "yes" to continue, or use `--force` to skip this confirmation.
Use the clear_cache.py script to clear:
python "${CLAUDE_PLUGIN_ROOT}/skills/duende-docs/scripts/maintenance/clear_cache.py"
## Cache Cleared
Successfully cleared Duende documentation search cache.
**Cleared:**
- inverted_index.json
- cache_version.json
**Next steps:**
- Search index will rebuild automatically on next search
- Or use `rebuild-index` action to rebuild immediately