Skip to main content
Glama
Cherridsaid
by Cherridsaid

phases-agents

English · Français

phases-agents: select, block, prove

Ein lokaler MCP-Server, der Fähigkeiten deterministisch entdeckt, validiert und auswählt. Nur Python-Standardbibliothek, keine Laufzeitabhängigkeiten.

Ein Server. Fünf Werkzeuge. Nichts wird hinter deinem Rücken ausgeführt.

Warum

KI-Agenten improvisieren. Stelle dieselbe Frage zweimal und du erhältst zwei verschiedene Pläne. Das ist für Brainstorming in Ordnung, aber für Audit- und Compliance-Arbeit inakzeptabel.

phases-agents beseitigt die Improvisation. Es profiliert ein lokales Projekt, validiert einen Katalog von Fähigkeiten gegen einen strengen Vertrag und liefert einen Plan, der wiederholbar ist. Gleiches Ziel, gleicher Katalog, gleiche Parameter, gleiche Entscheidung.

Related MCP server: AAS Core (agentic-awesome-skills-mcp)

Prinzip

Gleiche Eingaben, gleicher Plan

configured root identifiers
→ bounded discovery
→ official validation
→ immutable registry
→ verified cache
→ detector profile
→ deterministic selection
→ MCP plan

Der Server wählt aus und legt offen. Das aufrufende Modell liest die ausgewählten Fähigkeiten und entscheidet mit seinen eigenen Werkzeugen, was es damit tut. Der Server führt niemals eine Fähigkeit aus.

Architektur

Datei

Rolle

validator.py

offizielle Verträge und validierte Snapshots

skill_loader.py

begrenzte lokale Entdeckung

skill_runtime.py

vertrauenswürdige Wurzeln und verifizierter Cache

skill_types.py

unveränderliche Typen und Grenzen

registry.py

validiertes, unveränderliches Register

detector.py

lokales Profil des Ziels

planner.py

deterministische Auswahl und Reihenfolge

server.py

JSON-RPC/MCP-Transport

capabilities.py

Vokabular der Client-Fähigkeiten

profile_facts.py

versioniertes Vokabular der Profilfakten

skill_gaps.py

Lückenregeln (skills_missing)

Der normative Vertrag liegt in core/SKILLS_CONTRACT.md (Französisch).

Schnellstart

Ein Beispielpaket wird in examples/skills/ mitgeliefert. Drei Schritte erzeugen einen echten Plan.

git clone https://github.com/Cherridsaid/phases-agents && cd phases-agents

Erstelle skills-roots.json, das auf die Beispielwurzel zeigt:

{
  "config_version": "1.0",
  "roots": [
    { "id": "demo", "path": "/absolute/path/to/phases-agents/examples/skills" }
  ]
}
python server.py --skills-config /absolute/path/to/skills-roots.json

Der Server liest JSON-RPC zeilenweise von der Standardeingabe. Ein phases_agents_plan-Aufruf gegen ein Python-Projekt wählt dann hello-python aus:

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"phases_agents_plan",
 "arguments":{"root_ids":["demo"],"target":"/absolute/path/to/a/project",
 "today":"2026-08-27","plan_version":"B3",
 "client_capabilities":["filesystem_read","filesystem_search"]}}}

Zwei Planformate koexistieren. "B3" benennt das versionierte Format, nicht eine Serverversion; sein offizielles Schema ist core/PLAN_B3_SCHEMA.json. Verwende es für neue Arbeiten. Ohne plan_version liefert das Legacy-Format eine flache Liste von Schritten; es wird beibehalten, damit bestehende Aufrufer nicht brechen, und wird vor der Entfernung veraltet. client_capabilities wird nur in B3 akzeptiert, da die Angabe, was der Client kann, nur in diesem Format Sinn ergibt.

Einen MCP-Client verbinden

Claude Code (.mcp.json im Wurzelverzeichnis deines Projekts):

{
  "mcpServers": {
    "phases-agents": {
      "command": "python",
      "args": [
        "/absolute/path/to/phases-agents/server.py",
        "--skills-config",
        "/absolute/path/to/skills-roots.json"
      ]
    }
  }
}

Codex verwendet dasselbe Befehls-/Argumentenpaar in seiner eigenen Konfigurationsdatei. Es ist kein Token und keine Umgebungsvariable erforderlich.

MCP-Werkzeuge

detect(target)
list_skills(root_ids, today)
get_skill(root_ids, today, skill_id)
plan(root_ids, target, today, constraints?)
plan(root_ids, target, today, plan_version, client_capabilities?)
refresh_skills(root_ids, today)

today wird injiziert und nicht von einer Uhr gelesen, sodass jeder Aufruf wiederholbar ist. get_skill nimmt eine Kennung, niemals einen Pfad, und sein Inhalt stammt aus dem validierten Snapshot. Absolute Pfade und erkannte Geheimnisse werden in der öffentlichen Ausgabe maskiert. Jede kodierte JSON-RPC-Antwort bleibt unter 1 MiB.

Der erste Aufruf erstellt das validierte Register. Warme Aufrufe verifizieren Metadaten, ohne Inhalte erneut zu lesen. refresh_skills erzwingt einen Neuaufbau.

Ein Skill-Paket schreiben

Jedes Paket ist ein direktes Kind einer Wurzel und enthält mindestens:

<root>/<skill-id>/SKILL.md
<root>/<skill-id>/phases.json

Der schnellste Weg ist, examples/skills/hello-python/ zu kopieren und die Kennung umzubenennen.

SKILL.md-Frontmatter

Fünf Schlüssel sind erlaubt. Alle optional, alle werden geprüft, wenn vorhanden.

Schlüssel

Einschränkung

name

muss gleich phases.json.id sein

description

begrenzter Freitext

version

muss gleich phases.json.version sein

owner

freie Autorenidentität, keine unsichtbaren Zeichen

license

Apache-2.0, MIT, BSD-2-Clause oder BSD-3-Clause

Die vierzehn erforderlichen Abschnitte

Jeder ist eine Markdown-Überschrift (##), in beliebiger Reihenfolge. Abschnittstitel sind französisch, weil sie zum Vertrag gehören; den Inhalt kannst du in jeder Sprache schreiben.

Loi centrale · Ce que ce skill fait · Ce que ce skill ne fait pas · Conditions d'activation · Conditions d'exclusion · Capacites necessaires · Interdictions · Methode d'audit · Contrat de preuve · Format de sortie · Conditions de blocage · Limites connues · Exemples d'entree · Exemple de sortie attendue

phases.json-Felder

Alle erforderlich: schema_version, id, version, title, description, domain, project_types, platforms, activation, exclusions, requires_capabilities, optional_capabilities, forbidden_capabilities, execution_mode, human_approval, output_schema, rules_path, references_path, scripts_path, tests_path, files.

output_schema verwendet die symbolische Form core:SCHEMA_NAME.json.

Geschlossene Vokabulare

project_types muss sich mit dem überschneiden, was der Detektor ausgeben kann: apk, python, skill_package, solana, web.

activation.any verwendet Profilfakten: collects_personal_data, has_api, has_apk, has_authentication, has_database, has_ecommerce, has_eu_context, has_file_upload, has_javascript, has_python, has_rust, has_skill_packages, has_solana, has_source_code, has_typescript, has_web, uses_ai, uses_payments.

requires_capabilities, optional_capabilities und forbidden_capabilities verwenden: browser, dependency_installation, filesystem_read, filesystem_search, filesystem_write, human_question, shell, target_code_execution, web.

Bereitgestellte Fähigkeiten sind ein offenes Vokabular: Jeder Katalog benennt, was er mitbringt, und nur die Form wird erzwungen (^[a-z][a-z0-9_]{0,63}$). Nur Client-Fähigkeiten sind geschlossen, weil sie das Protokoll beschreiben und nicht deine Domäne.

Eine domain von legal, juridique, regulatory oder compliance löst ein zusätzliches Regime aus: Jede zitierte Regel muss eine offizielle Quelle, eine Rechtsordnung und ein Prüfdatum tragen.

Was das Schema sagt und nicht sagt

SKILL_MANIFEST_SCHEMA.json beschreibt die Form von phases.json: erforderliche Felder, Typen, geschlossene Vokabulare.

Die Schema-Engine ist bewusst minimal. Sie wendet enum, minLength und minItems an und sonst nichts: kein pattern, kein if/then, kein oneOf. Ein Schema, das diese Schlüsselwörter verwendet, würde selbst abgelehnt.

Die Konsequenz ist wichtig: Bedingte Regeln leben in validator.py, das die Quelle der Wahrheit bleibt. Die Versionsregel ist das Beispiel — provides_capabilities ist in einem 1.0-Manifest verboten und in einem 1.1-Manifest erforderlich. Diese Regel wird durchgesetzt und getestet, ist aber nicht im Schema ausdrückbar. Lies required nicht als den gesamten Vertrag.

Ein Paket nur mit SKILL.md schlägt fehl. Ein ungültiges Paket blockiert das Register, anstatt still zu degradieren.

Identität

phases.json.id ist die Identität, und SKILL.md.name muss damit übereinstimmen. Das Verzeichnis muss denselben Schlüssel tragen. Schlüssel werden mit NFKC normalisiert und dann casefold, sodass Homoglyphen keine zweite Identität einschmuggeln können. Jede Kollision blockiert den gesamten Build; kein Paket wird willkürlich gewählt.

Auswahl

Jede Fähigkeit wird klassifiziert und begründet

Jede gültige Fähigkeit im Register landet in genau einer Kategorie, mit ihrer Begründung. Nichts wird still verworfen.

Das einzige bewiesene automatische Signal ist:

project_types ∩ profile.types

Plattform, Domäne und Fähigkeiten filtern nur, wenn der Aufrufer diese Einschränkungen liefert. Eine verbotene Fähigkeit lehnt den Skill ab. Es wird kein semantischer Score erfunden, und der Plan wird nach Kennung sortiert.

Ein leerer Plan ist explizit gültig: Er trägt NO_COMPATIBLE_SKILL.

Der B3-Plan klassifiziert jede installierte Fähigkeit über skills_selected, skills_not_applicable und skills_blocked; jede Fähigkeit erscheint genau einmal. skills_missing listet Fähigkeiten ohne ausführbaren Anbieter auf, abgeleitet nur aus bestätigten Fakten. Eine Lücke beweist niemals Nicht-Konformität — sie sagt, dass ein als notwendig erachtetes Audit nicht abgedeckt ist.

Grenzen

  • maximal 16 Wurzeln

  • nur direkte Tiefe

  • maximal 1.000 Pakete

  • 10.000 Einträge pro Wurzel

  • SKILL.md auf 256 KiB begrenzt

  • eine einzelne Referenz auf 256 KiB begrenzt, insgesamt 1 MiB

  • Snapshots auf 16 MiB begrenzt

  • öffentliches Ergebnis auf 1 MiB begrenzt

  • 100 Probleme pro Paket

  • Fingerabdruck auf 100.000 Knoten begrenzt

Aufrufer dürfen diese Grenzen nur senken, nie erhöhen.

Laufzeitbeschränkungen

  • Python >=3.11

  • keine Laufzeitabhängigkeit von Drittanbietern

  • kein implizites Netzwerk

  • keine Laufzeit-Shell

  • kein Zielcode ausgeführt

  • keine implizite Uhr

  • keine Telemetrie

  • kein Skill heruntergeladen

pytest ist nur eine Entwicklungsabhängigkeit.

Tests

python -m pytest -q

Erwartetes Ergebnis:

729 passed, 2 skipped
0 failed

Normative Texte werden mit LF-Zeilenenden ausgecheckt, erzwungen durch .gitattributes. Einige Windows-Symlink-Tests werden übersprungen: Sie benötigen ein lokales Windows-Privileg. Windows-Junctions werden wirklich getestet.

Beweisniveau

Der Validator bestätigt nur eines:

STRUCTURALLY_VALIDATED

Er verifiziert nicht das echte Ziel. TARGET_VERIFIED bleibt in V1 verboten.

Sicherheit

Der Lader lehnt Reparse-Punkte ab. Lesevorgänge sind begrenzt und eingeschränkt. Die Ausgabe ist sortiert und deterministisch.

Eine Designentscheidung verdient deine Aufmerksamkeit: detect und plan nehmen einen target-Pfad, der nicht auf die konfigurierten Wurzeln beschränkt ist, weil es darum geht, ein beliebiges Projekt zu profilieren. Führe diesen Server unter einem Konto aus, dessen Reichweite du akzeptierst, und verbinde ihn nur mit einem vertrauenswürdigen Client. Das vollständige Bedrohungsmodell findest du in SECURITY.md.

Nicht-Garantien

  • keine universelle semantische Relevanz

  • kein externer Skill wird automatisch genehmigt

  • keine Prüfung von Skriptinhalten

  • kein Beweis für ein tatsächlich eingehängtes Ziel

  • keine vollständige Windows-Atomarität

  • keine universelle HTML-Erkennung

  • keine universelle Geheimnis-Erkennung

  • keine garantierte Rechtskonformität

  • kein Marktplatz, keine entfernte Quelle

Lizenz

Apache-2.0. Siehe LICENSE und NOTICE.

Available Tools

5 tools
phases_agents_detectC

Detecte localement le profil borne d'une cible. N'execute aucun fichier.

NameRequiredDescriptionDefault
targetYesChemin absolu local du projet.

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, and it does add one meaningful trait: the operation is local and executes nothing, implying a safe non-executing read. It says nothing about permissions, whether any state is written, rate limits, or what the detection result contains, so it falls short of the disclosure a no-annotation tool warrants.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the key constraint, with no filler. It is efficient, though the terse phrasing comes at the cost of the clarity noted elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter detection tool with no output schema and no annotations, the description is minimally viable but leaves gaps: it never defines what a "profil borne" comprises, what the caller receives, or how the result should be used. The absence of an output schema means more, not less, explanation was needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage ("Chemin absolu local du projet"), so the schema already fully documents its meaning and the baseline is 3. The description adds no syntax, format, or path-constraint detail beyond what the schema supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb ("Detecte") and an object ("le profil borne d'une cible"), so its basic function is identifiable. However, "profil borne" is undefined jargon and the scoping term "localement" is the only differentiator, leaving ambiguity about what is actually detected. It does not explicitly contrast with siblings like phases_agents_plan or phases_agents_list_skills.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to reach for this tool versus the other phases_agents_* siblings, nor any stated prerequisites beyond the required absolute path. The only usage-adjacent statement is a safety constraint ("N'execute aucun fichier"), which is behavioral rather than routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

phases_agents_get_skillC

Retourne le contenu borne d'un skill valide par identifiant. Aucun chemin libre n'est accepte.

NameRequiredDescriptionDefault
todayYesDate ISO YYYY-MM-DD injectee.
root_idsYes
skill_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It hints at two behaviors — content is 'borne' (bounded) and only identifiers (no free paths) are accepted — but never explains the bound, what happens on an invalid/unknown skill_id, permission requirements, or the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core purpose front-loaded and no padding. It is efficient, though extremely sparse for a three-required-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three required parameters, no annotations, no output schema, and no explanation of root_ids or today, the description is too thin for an agent to call this tool confidently. The one behavioral constraint it does give ('aucun chemin libre') is not enough to cover the gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%: 'today' is documented in the schema while 'root_ids' and 'skill_id' are not. The description says lookup is 'par identifiant' but never explains what root_ids (1–16 ids) is for or why an injected 'today' is required, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Retourne le contenu ... d'un skill') and scopes it by 'identifiant', which separates it from the sibling phases_agents_list_skills (listing) without naming it. The qualifier 'valide' adds a validity condition, but no explicit sibling differentiation is given.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus phases_agents_list_skills, phases_agents_refresh_skills, or phases_agents_plan. 'Aucun chemin libre n'est accepte' is an input constraint, not usage guidance. The agent must infer the use case from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

phases_agents_list_skillsC

Decouvre et liste uniquement les packages de skills valides.

NameRequiredDescriptionDefault
todayYesDate ISO YYYY-MM-DD injectee.
root_idsYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It does not explain what makes a package 'valide', whether discovery scans the filesystem or a cache, whether it is read-only, or how it relates to refresh_skills; only a vague 'découvre' hint is offered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with no filler, and the filtering constraint is included. It is terse to the point of being under-specified rather than bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and half the parameters undocumented, the description does not provide enough for an agent to call this correctly or interpret results — notably it never says whether 'valides' filtering has side effects or what is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% and the description adds no parameter information at all. In particular 'root_ids' is undocumented in both the schema and the description, leaving the agent to guess what roots to search and what identifier format they take.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Découvre et liste ... les packages de skills valides', with a scope qualifier ('uniquement ... valides') that hints at filtering. It does not name or contrast with the sibling get_skill or refresh_skills, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the alternatives among siblings (detect, get_skill, plan, refresh_skills). The agent must guess whether listing is a discovery step or a cached read.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

phases_agents_planB

Detecte une cible, charge le registre valide et rend un plan deterministe. N'execute aucun skill.

NameRequiredDescriptionDefault
todayYesDate ISO YYYY-MM-DD injectee.
targetYesChemin absolu local du projet.
root_idsYes
constraintsNo
plan_versionNo
client_capabilitiesNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses two behavioral traits: it loads a valid registry and it causes no side effects because it executes no skills. Beyond that it says nothing about failure modes, preconditions, or the determinism guarantees referenced around 'plan_version'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with zero filler. Purpose and the no-execution constraint come first. It is efficiently written, though arguably too terse given the tool's parameter complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, a nested object, no annotations, and no output schema, the description is far too thin. It does not explain how constraints, plan_version, or client_capabilities shape the plan, nor what the returned plan contains, leaving an agent without enough context to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% across 6 parameters, including a nested 'constraints' object, yet the description adds no meaning to any parameter. Words like 'cible' and 'registre valide' loosely map to target/root_ids, but no parameter is actually explained, so the coverage gap is not compensated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action sequence ('Detecte une cible, charge le registre valide et rend un plan deterministe') with a clear deliverable: a deterministic plan. The negation 'N'execute aucun skill' clarifies its scope versus execution-oriented siblings, but it does not name an alternative tool explicitly, so sibling differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'N'execute aucun skill' implies the tool is for planning rather than execution, giving an implied when-to-use signal. However, it never states when to prefer this over phases_agents_detect or the registry/skill tools, so usage is left largely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

phases_agents_refresh_skillsC

Reconstruit explicitement un registre depuis les racines autorisees.

NameRequiredDescriptionDefault
todayYesDate ISO YYYY-MM-DD injectee.
root_idsYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It implies a rebuild (likely a mutation that overwrites existing state) and hints at authorization via "racines autorisees", but never states whether existing data is destroyed, whether permissions are required, or if the operation is idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficiently written, though the terseness comes at the cost of the missing details scored elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating, no-annotation, no-output-schema tool, the definition leaves too much unsaid: what the rebuilt registry contains, the effect on existing skills, and what is returned. An agent cannot safely decide whether to call this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: "today" is documented in the schema, but "root_ids" has no description. The phrase "racines autorisees" loosely signals that root_ids must be authorized roots, but adds no format, cardinality (max 16), or relationship detail beyond what the schema already enforces.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description has a concrete verb ("Reconstruit") and object ("un registre"), but the object does not match the tool name: it says "registre" while the tool is about skills. Nothing distinguishes it from siblings like phases_agents_detect or phases_agents_list_skills, leaving the agent to guess what is actually being rebuilt.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the sibling tools (detect/get_skill/list_skills/plan) that could be alternatives. The adverb "explicitement" hints the operation is deliberate but does not tell the agent when that is warranted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.5.0
    • First observedphases_agents_detect
    • First observedphases_agents_get_skill
    • First observedphases_agents_list_skills
    • First observedphases_agents_plan
    • First observedphases_agents_refresh_skills

TDQS

B3.2/5.0

Scored across 5 tools

Disambiguation4/5

Each tool targets a distinct operation: detect (profile), get_skill (read one), list_skills (enumerate), refresh_skills (rebuild registry), plan (produce a plan). The one soft overlap is that plan already performs detection, so an agent might wonder when to call detect versus plan directly.

Naming Consistency5/5

All tools share the consistent phases_agents_ prefix followed by clear snake_case verbs/verb_noun forms (detect, get_skill, list_skills, plan, refresh_skills). No mixing of conventions.

Tool Count5/5

Five tools is well-scoped for a skill-registry/planning domain, covering discovery, retrieval, detection, planning, and registry refresh without redundancy.

Completeness4/5

The surface covers the full read-side lifecycle: enumerate skills, read a skill, refresh the registry, detect a target, and produce a plan. It is read-only by design (no skill authoring/editing), which is a minor gap but consistent with the stated bounded-execution purpose.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables coding agents to search, recommend, and validate a stack of reusable skills from a local catalog, producing deterministic plans without modifying the project.
    6,024 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local, read-only MCP server that lets coding agents search the complete AAS skill catalog, compose and validate agent-chosen skill stacks, and generate reproducible, reviewable plans without uploading project code.
    6,024 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables agents to search a local catalog, load skills, inspect MCP tool schemas, and invoke selected tools through a single unified MCP tool, reducing per-request overhead.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to search, retrieve, score, compose, and verify reusable agent skills from the SkillForge registry via MCP.
    9 npm
    MIT