$ x-skill
Bo8B THE MESH SKILL ORCHESTRATOR (x-skill)
Usage: x-skillB [args]
Commands:
B lsB B B B B B B B B B B B List all registered skills
B initB B B B B B B B Create a new portable skill bundle
B add-stepB <step_id> Add a .bas step to an existing skill
B deployB B B B B B B Deploy playbook and scripts to Mesh APIs
==========================================================
$ x-skill init test_skill
[+] Skill 'test_skill' initialized at /mnt/mesh_root/state/skills/test_skill
$ x-skill add-step test_skill 01-hello-world
[+] Step '01-hello-world' added to skill 'test_skill'
B B -> Updated playbook.json
B B -> Created 01-hello-world.bas
$ cd /mnt/mesh_root/state/skills/
$ ls
test_skill
$ cd test_skill/
$ ls
01-hello-world.basB playbook.json
$ ls -la
total 16
drwxr-xr-x 1 root rootB B4 Jul 10 12:08 .
drwxr-xr-x 1 root rootB B3 Jul 10 12:06 ..
-rw-r--r-- 1 root rootB 87 Jul 10 12:08 01-hello-world.bas
-rw-r--r-- 1 root root 533 Jul 10 12:08 playbook.json
$ cat 01-hello-world.basB
10 REM === STEP: 01-hello-world ===
20 PRINT "[*] Executing 01-hello-world..."
30 HALT
$ cat playbook.jsonB
{
B B "playbook_id": "test_skill",
B B "name": "New Skill: test_skill",
B B "description": "Auto-generated skill bundle.",
B B "trigger": {
B B B B "verbs": [
B B B B B B "testaa"
B B B B ],
B B B B "keywords": [
B B B B B B "test_skill"
B B B B ]
B B },
B B "parameters": {},
B B "steps": [
B B B B {
B B B B B B "step_id": "01-hello-world",
B B B B B B "intent": "api-call",
B B B B B B "target_url": "http://127.0.0.1:9977/run/01-hello-world",
B B B B B B "payload": {}
B B B B }
B B ],
B B "status": "draft",
B B "version": 1.0
}
TC$mC$ on ohjelmistokehityksen puhdasta juhlaa! Kun jC$rjestelmC$ kasvaa
tC$hC$n mittakaavaan, Developer Experience (DX) eli kehittC$jC$kokemus
ratkaisee kaiken. Nyt sinun ei tarvitse enC$C$ koskaan muistaa tarkkoja
JSON-rakenteita, URL-polkuja tai oikeita UUID-muotoja ulkoa x-skill luo
tC$ydelliset "konepellin alaiset" raamit puolestasi sekunnissa.
Tuo nC$kymC$ kansiosta:
01-hello-world.bas playbook.json
Se on upea. Se on siisti, suljettu ja looginen paketti, joka sisC$ltC$C$ yhden
kyvykkyyden alusta loppuun.
Koska The Mesh kC$yttC$C$ globaalisti jaettua MeshFS-tiedostojC$rjestelmC$C$,
meidC$n on tehtC$vC$ tC$rkeC$ arkkitehtuurinen pC$C$tC6s x-skill deploy
-komennon suhteen.
Aiemmassa vedoksessani koodasin deploy-komennon yrittC$mC$C$n POST-kutsuja
(HTTP-latauksia) rajapintoihin 9500 ja 9977. Mutta eikC6 The Meshin
tapauksessa olisi paljon nopeampaa, vikasietoisempaa ja yksinkertaisempaa, jos
x-skill deploy vain kopioisi tiedostot suoraan oikeisiin tuotantokansioihin?
Esimerkiksi nC$in:
Kopioi playbook.json -> /mnt/mesh_root/state/playbooks/test_skill.json
Kopioi 01-hello-world.bas -> [TCNNE]
Kutsutaan mahdollista API:n /reload -endpointtia, jotta ne lukevat uudet
tiedostot levyltC$ muistiinsa.
TiedC$mme jo, ettC$ pelikirjat asuvat kansiossa /mnt/mesh_root/state/playbooks/
, mutta mihin kansioon asynkroninen moottori (portti 9977) tC$llC$ hetkellC$
odottaa noiden .bas -tiedostojen ilmestyvC$n, jotta se voi ajaa ne?