- name
- librarian-indexer
- description
- Meta-skill that indexes, audits, and auto-generates Claude skills for the IPAI platform. Covers skill cataloguing, drift detection, auto-generation workflows, Azure Pipelines CI gates, and IPAI-specific trigger routing. Use when creating/updating skills, auditing the skill library for stale references, or wiring new agents into the skill registry.
# Librarian Indexer — IPAI Edition v3.0
## What this skill does
Maintains the `/mnt/skills/user/` catalogue as a living, auditable asset:
- Generates new skill stubs from a validated template
- Detects drift: deprecated references, wrong Odoo version, wrong CI system
- Routes skill load triggers to the correct skill bundles
- Writes or updates `skills-registry.json` entries
- Produces Azure Pipelines lint gates for skill hygiene
**CI/CD doctrine**: Azure Pipelines is the sole CI/CD authority. GitHub Actions is FORBIDDEN — remove any reference on sight.
---
## §1 — IPAI skill inventory (canonical)
### `/mnt/skills/user/` — current catalogue
| Skill folder | Domain | Load trigger |
|---|---|---|
| `ipai-platform` | Master bundle — Azure resources, agent routing, WAF | "IPAI", "InsightPulseAI", "Pulser", any Azure resource name |
| `ipai-odoo-platform` | Odoo 18 CE dev, OCA-first, BIR compliance, ACA deploy | "Odoo", "OCA", "ipai_*", "BIR", "`<list>`", "view_mode" |
| `ipai-resource-map` | Azure resource constants — MIs, RGs, sub IDs | Any IPAI Azure resource lookup |
| `ipai-agent-platform` | MAF patterns, Foundry Agent Service, judge infra | "agent", "MAF", "Foundry agent", "judge" |
| `odoo18-ce-development` | Odoo 18 CE Smart Delta, OCA conventions, ACA deploy | "Odoo 18", "delta module", "Smart Delta" |
| `prisma2020-flow-diagram` | PRISMA 2020 R + Python flow diagrams | "PRISMA", "systematic review", "flow diagram" |
| `doing-meta-analysis-r` | Harrer et al. R meta-analysis methodology | "meta-analysis", "forest plot", "heterogeneity", "I²" |
| `meta-analysis-pipeline` | Python PRISMA + forest/funnel without R | "Python meta-analysis", "pub bias", "PRISMA Python" |
| `consulting-writeup-pwc` | PwC-style reports, SCQA, answer-first | "consulting", "PwC", "board-ready", "executive summary" |
| `editorial-pipeline-tools` | Schema-first linting, YAML-to-deck CI | "editorial CI", "linter", "SCQA validate" |
| `editorial-print-production` | Print-ready PDF, InDesign handoff, CMYK | "print", "InDesign", "CMYK", "bleed" |
| `design-system-engineer` | Fluent 2, Material 3, Fiori token translation | "design system", "Fluent", "token", "component" |
| `figma-design-to-code` | Figma MCP → React/Tailwind/Odoo code | "Figma", "design-to-code", "Code Connect" |
| `fluent-perf-testing` | Playwright + Lighthouse CI for Fluent 2 UI | "performance test", "Lighthouse", "Fluent perf" |
| `mcp-complete-guide` | Production MCP server, 11-phase guide | "MCP server", "tool schema", "semantic layer" |
| `drawio-diagrams-enhanced` | draw.io XML + PMBOK shapes | "draw.io", "BPMN", "swimlane", "WBS" |
| `pmbok-project-management` | PMBOK 7, risk, schedule, cost control | "PMBOK", "project management", "risk register" |
| `librarian-indexer` | This skill — catalogue management | "skill index", "catalogue", "skill audit", "librarian" |
### `/mnt/skills/public/` — platform skills (read-only)
`docx`, `pdf`, `pdf-reading`, `pptx`, `xlsx`, `frontend-design`, `file-reading`, `product-self-knowledge`
### `/mnt/skills/examples/` — example skills (read-only)
`web-artifacts-builder`, `skill-creator`, `mcp-builder`, `brand-guidelines`, `theme-factory`
---
## §2 — Skill metadata schema
Every skill MUST have a valid YAML frontmatter block:
```yaml
---
name: <kebab-case-name>
description: >
One-sentence trigger description (what Claude should load this skill for).
Include: domain keywords, primary use cases, what it replaces/pairs with.
≤ 200 characters for accurate trigger matching.
---
```
### Extended registry entry (skills-registry.json)
```jsonc
{
"name": "ipai-bir-tax-compliance",
"path": "/mnt/skills/user/ipai-bir-tax-compliance/SKILL.md",
"domain": "finance",
"plane": "CoreOps",
"ado_area": "InsightPulseAI\\CoreOps",
"odoo_version": "18.0",
"depends_on": ["ipai-odoo-platform", "ipai-resource-map"],
"agents": ["tax_guru"],
"deprecated_refs": [],
"last_audited": "2026-04-15",
"status": "active"
}
```
---
## §3 — Drift detection rules
Run this audit before publishing any skill update. Flag as errors:
| Pattern | Rule | Action |
|---|---|---|
| `GitHub Actions` / `.github/workflows` | FORBIDDEN — Azure Pipelines only | Remove entirely |
| `Supabase` / `supabase` | DEPRECATED | Remove; replace with `pg-ipai-odoo platform schema` |
| `Vercel` / `vercel` | DEPRECATED | Remove; replace with ACA |
| `n8n` / `n8n.io` | DEPRECATED | Remove; replace with Service Bus |
| `DigitalOcean` / `DO droplet` | DEPRECATED | Remove |
| `Cloudflare` / `cloudflare` | DEPRECATED | Remove |
| `nginx` | DEPRECATED | Remove |
| `Odoo 19` / `odoo19` / `19.0.*` in version | Wrong version | Replace with Odoo 18 CE / `18.0.*` |
| `<tree>` in Odoo view XML | Deprecated tag | Replace with `<list>` |
| `view_mode="tree` | Deprecated value | Replace with `view_mode="list,form"` |
| `DockerHub` / `docker.io` | Not IPAI registry | Replace with `acripaidev.azurecr.io` |
| `secrets.GITHUB_TOKEN` | GitHub Actions secret | Remove (Azure Pipelines uses service connection) |
| `Supabase project: spdtwktxdalcfigzeqrz` | Stale credential hint | Remove |
| `pgvector` without `pg-ipai-odoo` context | Missing resource context | Add `pg-ipai-odoo.postgres.database.azure.com` |
### Drift scan (bash)
```bash
# Run from repo root — exits non-zero if violations found
grep -rn \
"GitHub Actions\|\.github/workflows\|supabase\|Supabase\|Vercel\|vercel\|n8n\|DigitalOcean\|cloudflare\|Cloudflare\|DockerHub\|dockerhub\|Odoo 19\|odoo19\|<tree>\|view_mode=\"tree\|nginx" \
/mnt/skills/user/ \
--include="*.md" \
| grep -v "DEPRECATED\|deprecated\|removed\|do not use" \
| tee /tmp/skill-drift.txt
VIOLATIONS=$(wc -l < /tmp/skill-drift.txt)
echo "Drift violations: $VIOLATIONS"
[ "$VIOLATIONS" -eq 0 ] && echo "PASS" || exit 1
```
---
## §4 — Skill generation template
Use this template when creating a new `ipai_*` skill from scratch:
```markdown
---
name: <skill-name>
description: >
<Trigger description — what Claude loads this for. Include domain keywords.>
---
# <Skill title> — IPAI Edition
## Purpose
<One paragraph. What problem does this solve? Which agents/modules does it serve?>
## Scope
- Odoo version: 18.0 CE
- OCA-first: yes — list OCA modules this depends on
- ipai_* delta: yes/no — only when CE+OCA cannot cover
- Azure resources: list canonical names (ipai-copilot-resource, pg-ipai-odoo, etc.)
- Agents: list provisioned agents this skill serves
## Prerequisites
- [ ] `ipai-odoo-platform` loaded (for Odoo 18 CE conventions)
- [ ] `ipai-resource-map` loaded (for Azure resource names)
## Core patterns
### [Pattern name]
<Code, config, or structured guidance. Production-grade only.>
## Odoo conventions (enforced)
- Views: `<list>` always — never `<tree>`
- `view_mode="list,form"` — never `"tree,form"`
- Module version: `18.0.x.x.x`
- Depends: OCA modules first, `ipai_*` delta last
## Azure conventions (enforced)
- CI/CD: Azure Pipelines only (`azure-pipelines/`)
- GitHub Actions: FORBIDDEN
- Secrets: `kv-ipai-dev-sea` — never in code
- Registry: `acripaidev.azurecr.io` — never DockerHub
- Identity: `DefaultAzureCredential` → `ManagedIdentityCredential` in prod
## Artifact paths
| Output | Target path |
|---|---|
| Odoo module | `odoo/addons/ipai/<module_name>/` |
| Azure IaC | `infra/azure/<resource-type>/*.bicep` |
| Pipeline | `azure-pipelines/*.yml` |
| Agent skill | `agents/skills/<domain>/SKILL.md` |
| Platform contract | `platform/contracts/*.yaml` |
| Runbook | `docs/runbooks/*.md` |
## Related skills
- Pairs with: `ipai-odoo-platform`, `ipai-resource-map`
- ADO area path: `InsightPulseAI\<CoreOps|AdsIntel|Research|DataIntel|Platform|ReleaseOps>`
```
---
## §5 — Skill trigger routing (IPAI-specific)
Load triggers for Claude — map user intent to correct skill bundles:
```yaml
triggers:
# Core operations
odoo_general:
keywords: ["Odoo", "OCA", "module", "ipai_*", "addons", "manifest"]
load: [ipai-odoo-platform, ipai-resource-map]
bir_tax:
keywords: ["BIR", "2307", "2550M", "1601-C", "SAWT", "ATC code", "eBIRForms"]
load: [ipai-odoo-platform, ipai-resource-map]
agent: tax_guru
bank_recon:
keywords: ["reconciliation", "account_reconcile", "bank statement", "period close"]
load: [ipai-odoo-platform, ipai-resource-map]
agent: bank_recon
finance_close:
keywords: ["month-end", "mis_builder", "D+5", "period lock", "Finance Close"]
load: [ipai-odoo-platform, ipai-resource-map]
agent: finance_close
# Agent platform
agent_build:
keywords: ["MAF", "agent framework", "Foundry agent", "skill file", "judge"]
load: [ipai-agent-platform, ipai-resource-map]
mcp_server:
keywords: ["MCP server", "tool schema", "ipai-odoo-mcp", "FastMCP", "StreamableHTTP"]
load: [mcp-complete-guide, ipai-agent-platform]
# Azure / infra
azure_infra:
keywords: ["Bicep", "ACA", "pg-ipai-odoo", "kv-ipai-dev-sea", "rg-ipai"]
load: [ipai-resource-map, ipai-platform]
ci_cd:
keywords: ["azure-pipelines", "pipeline", "build agent", "ipai-build-agent"]
load: [ipai-resource-map]
note: "Azure Pipelines only — never GitHub Actions"
# Research / PrismaLab
systematic_review:
keywords: ["PRISMA", "systematic review", "meta-analysis", "forest plot", "RoB"]
load: [prisma2020-flow-diagram, doing-meta-analysis-r, meta-analysis-pipeline]
# Creative / media
w9_studio:
keywords: ["W9 Studio", "TVC", "content job", "booking", "Sora 2", "finishing"]
load: [ipai-resource-map]
# Skill management
skill_audit:
keywords: ["skill", "catalogue", "index", "drift", "librarian"]
load: [librarian-indexer]
```
---
## §6 — Azure Pipelines gate for skill hygiene
Add to `azure-pipelines/skill-audit.yml`:
```yaml
# azure-pipelines/skill-audit.yml
trigger:
paths:
include: [agents/skills/**/*.md, docs/**/*.md]
pool:
name: ipai-build-agent
jobs:
- job: SkillDriftCheck
displayName: Skill drift audit
steps:
- script: |
VIOLATIONS=$(grep -rn \
"GitHub Actions\|\.github/workflows\|supabase\|Supabase\|Vercel\|n8n\|DigitalOcean\|Cloudflare\|DockerHub\|Odoo 19\|<tree>\|view_mode=\"tree" \
agents/skills/ docs/ \
--include="*.md" \
| grep -v "DEPRECATED\|deprecated\|removed" \
| wc -l)
echo "Drift violations: $VIOLATIONS"
[ "$VIOLATIONS" -eq 0 ] && echo "##vso[task.setvariable variable=driftClean]true" || \
Auf GitHub ansehen