Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

HTTP API: skills

Každá dovednost, kterou vrstva definuje jako prokázanou schopnost: zda ji pojmenovává test a kniha důkazů drží aktuální úspěšný běh tohoto testu, zda web promítá její stránku, zda ji drží doktrína a kontrola v CI a zda ji vyvolává workflow, prompt, profil, šablona providera, recept nebo CI workflow. Všechny čtyři se odvozují při každém čtení a žádná se nepíše ručně; aktivní dovednost, kterou nepojmenovává žádný test nebo ji nic nevyvolává, je sirotek.

Vykresleno z docs/generated/openapi.json, který spustitelný soubor generuje ze svého registru schopností a CI jej odmítne, je-li zastaralý. Surový dokument je na /openapi.json; běžící server servíruje stejný dokument na vlastní /openapi.json a Swagger UI na /swagger.

skills

Každá dovednost, kterou vrstva definuje jako prokázanou schopnost: zda ji pojmenovává test a kniha důkazů drží aktuální úspěšný běh tohoto testu, zda web promítá její stránku, zda ji drží doktrína a kontrola v CI a zda ji vyvolává workflow, prompt, profil, šablona providera, recept nebo CI workflow. Všechny čtyři se odvozují při každém čtení a žádná se nepíše ručně; aktivní dovednost, kterou nepojmenovává žádný test nebo ji nic nevyvolává, je sirotek.

GET /api/v1/skills skills.status

Každá dovednost s odvozeným postavením

Každá dovednost, kterou index drží, každá s testy, které ji jmenují, a stavem důkazů jejich posledních běhů, její projekcí stránky, doktrínou a kontrolami, které ji drží, každým vyvoláním, které na ni odkazuje, a postavením, které z toho vyplývá: proven, partial, orphan, invalid nebo not_required pro dovednost ve stavu konceptu či zastaralou.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • cache vypnuta
  • nástroj MCP majordomus_skills
  • Zdroj MCP {"name": "skills", "uri": "majordomus://skills"}
  • $ skills status

Žádné parametry.

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/skills"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 SkillStatusList Každá dovednost s odvozeným stavem: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.
GET /api/v1/skills/explain skills.explain

Jedna dovednost se vším, co o ní bylo odvozeno

Jedna dovednost celá: její autorská identita, stav a značka původu, každý test, který ji jmenuje, se stavem posledního zaznamenaného běhu a příkazem, který ho reprodukuje, její stránka, doktrína a kontroly, každé vyvolání podle cesty a řádku, její postavení a zjištění o ní. Samotný soubor zůstává na `majordomus://skill/<id>`.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • cache vypnuta
  • MCP nástroj majordomus_skill_explain
  • $ skills explain

Parametry dotazu

názevtyppovinnépopispříklady
id string ano Id dovednosti, které je zároveň názvem jejího adresáře. first-skill: "assess-before-deleting"

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/skills/explain?id=assess-before-deleting"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 SkillStatus Jedna dovednost se vším, co o ní bylo odvozeno: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.
GET /api/v1/skills/verify skills.verify

Co dovednosti dluží a nemají

Každý nález nad dovednostmi: soubor, který porušuje kontrakt dovednosti, aktivní dovednost, kterou nejmenuje žádný test nebo ji nic nevyvolává, test, jehož poslední běh selhal, test nebo vyvolání jmenující dovednost, která neexistuje — každé selhání — a důkazy, které nejsou aktuální, chybějící stránka nebo chybějící kontrola, každé varování.

  • query
  • behaviorally_verified
  • vyžaduje se měření výkonu
  • cache vypnuta
  • nástroj MCP majordomus_skills_verify
  • $ skills verify

Žádné parametry.

Vyzkoušejte

Port je ten, který server zalogoval; 8741 je ten, o který žádá jako první. Hodnoty jsou první příklad operace.

curl -s "http://127.0.0.1:8741/api/v1/skills/verify"

Testováno v apps/majordomus-cli/tests/http_serve.rs, který přehrává routu s těmito hodnotami proti serveru na skutečném socketu.

Odpovědi

statustělovýznam
200 SkillVerification Co dovednosti dluží a nemají: výsledek.
400 ErrorBody invalid_input: Vstup neodpovídá schématu: parametr špatného typu, neznámý parametr nebo hodnota, kterou schopnost odmítne.
404 ErrorBody not_found: Vstup pojmenovává něco, co repozitář nemá.
500 ErrorBody internal: Schopnost selhala z vlastního důvodu; zpráva ho pojmenovává.
výchozí ErrorBody Jakékoli jiné selhání, které transport hlásí: 405 method_not_allowed pro jinou metodu na této cestě, 400 invalid_input pro tělo, které není objektem JSON.

Schémata

Komponenty, které používají jen operace tohoto tagu. Každý řádek je pole daného typu, jeho doc komentář je popis; typ vlastněný jinou stránkou na ni odkazuje.

SkillDocumented

object
Zdokumentovaný fakt: stránka, kterou web pro dovednost promítá.

use majordomus_cli::skill::SkillDocumented;
let d = SkillDocumented { documented: true, page: "site/content/skills/implement.md".into() };
assert!(d.page.ends_with("implement.md"));
vlastnosttyppovinnépopis
zdokumentováno boolean ano Zda je stránka sledovaný soubor.
stránka string ano Kde je stránka promítnuta.

Používá SkillStatus

SkillEnforced

object
Vynucený fakt: doktrína, která ověřuje dovednosti, a kontroly, které si změna této dovednosti vybere.

use majordomus_cli::skill::SkillEnforced;
let e = SkillEnforced { enforced: false, doctrine: None, gates: vec![] };
assert!(!e.enforced);
vlastnosttyppovinnépopis
vynuceno boolean ano Doktrína validuje dovednosti a kontrola, která spouští ověření, pokrývá tento soubor.
doktrína string | null ne Pravidlo, jehož validátor je skills, když jej index drží.
kontroly array of string ano Kontroly CI, které změna dovednosti vybere a jejichž příkaz spouští skills verify.

Používá SkillStatus

SkillEvidence

"proven" | "inputs_unchanged" | "stale" | "failing" | "not_run" | "unrunnable" | "untested"
Co kniha důkazů může říci o testech dovednosti jako celku: nejslabší stav testů, které ji jmenují, nebo untested, když ji nejmenuje žádný.

use majordomus_cli::skill::SkillEvidence;
assert!(SkillEvidence::Proven.current());
assert!(SkillEvidence::InputsUnchanged.current());
assert!(!SkillEvidence::Stale.current());
assert!(SkillEvidence::Proven < SkillEvidence::Untested);
  • provenKaždý test pojmenování má úspěšný běh a od té doby se změnil jen ledger.
  • inputs_unchangedKaždý test pojmenování prošel a od té doby se nezměnil ani test, ani dovednost.
  • staleÚspěšný běh existuje a test nebo dovednost se od té doby změnily.
  • failingPoslední zaznamenaný běh testu pojmenování neprošel.
  • not_runTest jmenuje dovednost a žádný její běh nebyl nikdy zaznamenán.
  • unrunnableTest pojmenuje dovednost podle cesty, kterou žádný runner neprovádí.
  • untestedŽádný test dovednost nepojmenovává.

Používá SkillTested

SkillFinding

object
Jedna věc, kterou odvození shledalo špatnou, s příkazem, který ji urovná nebo reprodukuje.

use majordomus_cli::skill::{SkillFinding, SkillFindingLevel};
let f = SkillFinding {
    level: SkillFindingLevel::Fail,
    code: "untested".into(),
    skill: Some("implement".into()),
    subject: ".ai/repo/skills/implement/SKILL.md".into(),
    message: "no test names this skill".into(),
    reproduce: "majordomus skills explain implement".into(),
};
assert!(f.reproduce.contains("explain"));
vlastnosttyppovinnépopis
úroveň SkillFindingLevel → SkillFindingLevel ano fail nebo warn.
kód string ano Stabilní kód: contract, untested, unused, unevidenced, failing, undocumented, unenforced, unknown_skill_in_test, unknown_skill_invoked.
dovednost string | null ne Dotčená dovednost, když se nález týká jedné.
předmět string ano Soubor, kterého se zjištění týká, relativní k repozitáři.
zpráva string ano Co je špatně a co s tím dělat.
reprodukovat string ano Příkaz, který to reprodukuje nebo vyřeší.

Používá SkillStatus SkillVerification

SkillFindingLevel

"fail" | "warn"
Jak vážný je nález: selhání odmítne, varování se ohlásí.

use majordomus_cli::skill::SkillFindingLevel;
assert_ne!(SkillFindingLevel::Fail, SkillFindingLevel::Warn);
  • failOdmítá: skills verify skončí s 10 a doktrína selže.
  • warnHlásí se a neodmítá.

Používá SkillFinding

SkillInvocation

object
Jedno místo, odkud se dovednost vyvolává.

use majordomus_cli::skill::SkillInvocation;
let i = SkillInvocation {
    path: ".ai/repo/prompts/review.md".into(),
    line: 3,
    reference: "majordomus://skill/repo-review".into(),
};
assert_eq!(i.line, 3);
vlastnosttyppovinnépopis
path string ano Povrch vyvolání, relativně k repozitáři.
řádek integer (uint) ano Řádek odkazu počítaný od 1.
reference string ano Reference tak, jak je zapsána.

Používá SkillUsed

SkillProvenance

object
Odkud dovednost pochází, když nevznikla tady: neprůhledná značka do účetní knihy vedené mimo repozitář. Commitnutá polovina nepojmenovává žádný zdroj; záznam v knize, na který ukazuje, ho pojmenovává lokálně.

use majordomus_cli::skill::SkillProvenance;
let p = SkillProvenance {
    origin: "prior-art".into(),
    ledger: "import-2026-09-09#1".into(),
    decision: "adapted".into(),
};
assert!(p.ledger.starts_with("import-"));
vlastnosttyppovinnépopis
původ string ano prior-art: koncept byl prozkoumán jinde dřív, než byla tato dovednost napsána.
kniha záznamů string ano import-<date>#<n>: záznam lokální importní knihy, který drží mapování.
rozhodnutí string ano adapted, reimplemented nebo merged.

Používá SkillStatus

SkillStanding

"proven" | "partial" | "orphan" | "invalid" | "not_required"
Kde dovednost stojí, odvozeno ze čtyř faktů.

use majordomus_cli::skill::SkillStanding;
assert_eq!(SkillStanding::Orphan.label(), "orphan");
  • provenAktivní a otestováno s aktuálními důkazy, zdokumentováno, vynucováno a používáno.
  • partialAktivní, pojmenovaný testem a vyvolávaný, s alespoň jedním dluhem, který jmenuje varování.
  • orphanAktivní a žádný test ho nepojmenovává, nebo ho nic nevyvolává.
  • invalidJeho soubor nesplňuje smlouvu dovednosti; i ten, který index zcela odmítl, je zde uveden, aby se výpis nikdy tiše nezkracoval.
  • not_requiredDraft nebo zastaralé: nic se nedluží.

Používá SkillStatus

SkillStatus

object
Jedna dovednost se vším, co o ní bylo odvozeno.

use majordomus_cli::skill::SkillStatus;
// every fact is always present in the answer, so a client never has to tell "absent"
// from "false"; only the provenance is optional
let schema = serde_json::to_value(schemars::schema_for!(SkillStatus)).unwrap();
let required = schema["required"].as_array().unwrap();
for field in ["id", "valid", "tested", "documented", "enforced", "used", "standing"] {
    assert!(required.iter().any(|f| f == field), "{field}");
}
assert!(!required.iter().any(|f| f == "provenance"));
vlastnosttyppovinnépopis
id string ano Id dovednosti, které je názvem jejího adresáře.
uri string ano majordomus://skill/<id>.
název string ano Název tak, jak byl napsán.
popis string ano Popis tak, jak byl napsán.
status string ano Stav životního cyklu tak, jak byl napsán: draft, active nebo deprecated; unknown pro soubor, který index odmítl.
verze integer (uint64) ano Verze tak, jak byla napsána.
path string ano Soubor, relativní k repozitáři.
provenance SkillProvenance | null → SkillProvenance ne Odkud pochází, když to deklaruje.
platné boolean ano Zda soubor splňuje smlouvu dovednosti, jak ji posoudil index.
otestováno SkillTested → SkillTested ano Testovaný fakt.
zdokumentováno SkillDocumented → SkillDocumented ano Zdokumentovaný fakt.
vynuceno SkillEnforced → SkillEnforced ano Vynucený fakt.
použito SkillUsed → SkillUsed ano Použitý fakt.
postavení SkillStanding → SkillStanding ano Kde stojí, odvozeno ze čtyř.
zjištění pole SkillFinding → SkillFinding ano Nálezy o této dovednosti.

Používá skills.explain SkillStatusList

SkillStatusList

object
Každá dovednost s odvozeným postavením a kolik jich stojí kde: co odpovídají majordomus skills status, GET /api/v1/skills a nástroj majordomus_skills.

use majordomus_cli::capability::builtin::skills::SkillStatusList;
let empty = SkillStatusList {
    count: 0,
    standings: std::collections::BTreeMap::new(),
    skills: vec![],
};
assert_eq!(empty.count, 0);
vlastnosttyppovinnépopis
počet integer (uint) ano Kolik je dovedností.
stavy mapa celých čísel (uint) ano Kolik v každém postavení, klíčováno slovem postavení.
skills pole SkillStatus → SkillStatus ano Každá dovednost v pořadí indexu.

Používá skills.status

SkillTest

object
Jeden test, který jmenuje dovednost, a co o něm říká kniha.

use majordomus_cli::evidence::ProofState;
use majordomus_cli::skill::SkillTest;
let t = SkillTest {
    path: "test/cases/95_skills.sh".into(),
    test: Some("suite:95_skills".into()),
    state: ProofState::NotRun,
    reproduce: Some("bash test/run.sh 95_skills".into()),
    recorded_at: None,
};
assert_eq!(t.state, ProofState::NotRun);
vlastnosttyppovinnépopis
path string ano Cesta testu.
test string | null ne Jeho identita v ledgeru, když cestu vlastní runner.
state ProofState → ProofState ano Co kniha říká o svém posledním běhu pro tuto dovednost.
reprodukovat string | null ne Příkaz, který to spustí znovu.
recorded_at string | null ne Kdy byl zaznamenán běh za tímto stavem.

Používá SkillTested

SkillTested

object
Otestovaná skutečnost: testy, které dovednost jmenují, a jejich nejslabší stav.

use majordomus_cli::skill::{SkillEvidence, SkillTested};
let t = SkillTested { state: SkillEvidence::Untested, tests: vec![] };
assert!(!t.state.current());
vlastnosttyppovinnépopis
state SkillEvidence → SkillEvidence ano Nejslabší stav testů pojmenování; untested, pokud žádné nejsou.
tests pole SkillTest → SkillTest ano Každý test, který jmenuje dovednost, v pořadí cest.

Používá SkillStatus

SkillUsed

object
Použitý fakt: každý povrch vyvolání, který se na dovednost odkazuje.

use majordomus_cli::skill::SkillUsed;
let u = SkillUsed { used: false, invocations: vec![] };
assert!(!u.used);
vlastnosttyppovinnépopis
použito boolean ano Alespoň jeden povrch vyvolání se na dovednost odkazuje.
vyvolání pole SkillInvocation → SkillInvocation ano Každý odkaz, v pořadí cest a řádků.

Používá SkillStatus

SkillVerification

object
Verdikt nad každou dovedností: platné, pokud žádný nález neodmítá.

use majordomus_cli::capability::builtin::skills::SkillVerification;
let v = SkillVerification { valid: true, skills: 3, failures: 0, warnings: 2, findings: vec![] };
// warnings are debts, reported; they do not make the verdict false
assert!(v.valid);
vlastnosttyppovinnépopis
platné boolean ano Pravda, když žádné zjištění není selháním.
skills integer (uint) ano Kolik dovedností bylo prozkoumáno.
selhání integer (uint) ano Kolik zjištění odmítá.
varování integer (uint) ano Kolik zjištění jsou varování.
zjištění pole SkillFinding → SkillFinding ano Každý nález.

Používá skills.verify

Prohledává názvy a popisy všech stránek, které tento web publikuje.