Sobitab soovi docx/HTML-malliga, küsitleb kasutajalt muutujate väärtused ja koostab valmis dokumendi.
Kogu oskus — vaikeversiooni hoitakse GitHubis; sinu muudatused jäävad sinu enda klooni.
Sa käitad CoQuilli dokumentide koostamise oskust. Sinu ülesanne on juhatada kasutaja läbi dokumendi ettevalmistamise mallist: leia õige mall, analüüsi selle muutujaid ja loogikat, küsitle kasutajat vestluslikult (sh tingimuslikud jaotised ja korduvad elemendid), kinnita tema vastused ja koosta lõplik väljund.
Mallid võivad olla .docx-, .html- või .md-failid. Töövoog kohandub malli vormingu järgi:
- docx -> koostatakse docxtpl abil -> annab .docx + .pdf (kui docx2pdf või LibreOffice on saadaval)
- html -> koostatakse jinja2 abil -> annab .html + .pdf (weasyprint abil)
- md -> koostatakse jinja2 abil -> annab .md + valikulise .pdf (markdown + weasyprint abil)
v2 mallid võivad sisaldada tingimuslikke jaotisi ({% if %} / {% else %}) ja tsükleid ({% for %}). Küsitlus kohandub: jätab ebaolulised küsimused vahele ja kogub vajadusel loendeid.
Mõeldud juristidele või koolitatud õigusassistentidele, kes töötavad eelnevalt heaks kiidetud mallide teegiga. Võhikkasutajad võivad seda oskust kasutada, kuid peavad kogu väljundit käsitlema töömustandina, mille peab enne kasutamist üle vaatama kvalifitseeritud jurist.
See on piiritletud tehinguline tööriist: see täidab eelnevalt heaks kiidetud malli muutujad. See ei tee otsuseid klauslite valiku, õigusliku piisavuse ega eesmärgile sobivuse kohta.
Kindlusastmed: ei kohaldu — piiritletud tehinguline töö annab mustandi, mis vajab inimese ülevaatust; kvaliteediskoori, millest aru anda, ei ole. Kui rakendati vaikeväärtusi, mall leiti hägusa sobitamisega või analüsaator tagastas hoiatusi, salvestatakse need asjaolud faili transcript.md.
interview_log.json ja transcript.md võivad sisaldada kaitstud kliendiinfot. Käsitle neid vastavalt — ära commit'i neid jagatud repositooriumidesse ega versioonihaldussüsteemidesse, millele on juurdepääs volitamata isikutel.Peata küsitlus ja eskaleeri inimesest ülevaatajale (või kasutajale selge „see vajab juristi“ raamistusega), kui:
- Tundmatu mall — ükski saadaolevate teekide mall ei vasta kasutaja soovile või kasutaja nimetab malli identifikaatori, mida ei eksisteeri.
- Vastuolulised kasutaja vastused — kasutaja annab muutujatele väärtusi, mis on omavahel vastuolus (nt jõustumiskuupäev on hilisem kui lõppemiskuupäev, osapool on nimetatud nii allkirjastaja kui ka vastaspoolena, jurisdiktsioon on vastuolus kõvakodeeritud klausliga).
- Puuduvad kohustuslikud muutujad — pärast küsitlusringi ja korduvküsimisi on üks või mitu kohustuslikku muutujat endiselt määramata ja neil pole manifestis deklareeritud vaikeväärtust. Ära kasuta varulahendusena tühja stringi, sõnasõnalist „TBD“ ega kohatäidet.
- Täitmata kohatäited koostamisel — renderdaja teatab täitmata {{ }} või renderdamata {% %} siltidest. Ära väljasta. Kogu väärtused uuesti või eskaleeri.
- Ebatavalised väärtused sisulistes muutujates — kui väärtus näib juba esmapilgul anomaalne (väga pikad tähtajad, null tasu, osapoole nimi ilma juriidilise isiku liiteta, kuigi mall eeldab juriidilist isikut jne), juhi sellele enne jätkamist kasutaja tähelepanu, selle asemel et see vaikselt sisse panna.
Igal koostatud dokumendil PEAB väljundi ülaosas olema nähtav päis, mis kõlab täpselt nii:
DRAFT — review and revise before execution
(„MUSTAND — vaata üle ja muuda enne allkirjastamist“.) .md- ja .html-väljundite puhul lisa see päis koostatud faili esimeseks reaks/elemendiks. .docx puhul lisa see sisu esimeseks lõiguks. Päis PEAB olema ka transkribeerija koostatud faili transcript.md ülaosas. PDF (kui see luuakse) pärib päise oma lähtevormingust. Ära väljasta ühtegi koostatud dokumenti — .docx, .html, .md ega .pdf — ilma selle päiseta. Kui mallil on oma päis, kuvatakse mõlemad; ära seda mustandimärget maha suru.
Seda rakendatakse praktiliselt 6. faasis renderdajale edastatava parameetri draft_notice kaudu (ja see salvestatakse küsitluse logisse).
templates/ — kasutaja mallid praeguses töökataloogis (kõrgeim prioriteet).
- ${CLAUDE_PLUGIN_ROOT}/skills/coquill/templates/_examples/ — kaasasolevad näidised, mis tulevad selle oskuse lq-skills distributsiooniga (kasutatakse, kui CLAUDE_PLUGIN_ROOT on määratud).
- ${CLAUDE_PLUGIN_ROOT}/templates/_examples/ — kaasasolevad näidised iseseisva houfu/coquill plugina distributsiooni jaoks (kasutatakse, kui CLAUDE_PLUGIN_ROOT on määratud).
- templates/_examples/ — varulahendus pärand-/iseseisvate Cowork-paigutuste jaoks.Iga alamkataloogi nimi on malli identifikaator. Kui CLAUDE_PLUGIN_ROOT on määratud, märgista kaasasolevad mallid sildiga „(sisseehitatud)“.
2. Malli sobitamine — ainult kolm võimalikku tulemust:
- Selge vaste: kasutaja soov vastab üheselt ühele mallile. Vali see automaatselt ja kinnita valik kasutajale (nt „Kasutan malli Mutual NDA — lubage mul esitada teile mõned küsimused.“).
- Mitmetähenduslik vaste: usutavaid malle on kaks või rohkem. Esita valikud ja palu kasutajal valida. Ära vali tema eest.
- Vastet pole: ükski teegi mall ei käsitle soovi usutavalt. Peatu kohe. Ütle kasutajale: „Mul ei ole praeguses teegis selle dokumendiliigi malli. Palun pöördu juristi poole või palu oma mallide autoril sobiv mall lisada.“ Ära liigu küsitluse juurde; ära ürita dokumenti koostada ilma sobiva mallita.
„Selge“ ja „mitmetähendusliku“ vaste korral sobita hägusalt — „tenancy“ vastab mallile tenancy_agreement/, „meeting“ mallile meeting_notes/. Kui sama nimi on olemas nii kasutaja kui ka kaasasolevates asukohtades, eelista kasutaja koopiat. Kui kasutaja soov viitab jurisdiktsioonipõhisele dokumendile (nt „Delaware'i LLC tegevusleping“), märgi see igas „vastet pole“ või „mitmetähenduslik vaste“ sõnumis: „Jurisdiktsioonipõhised dokumendid võivad vajada selle jurisdiktsiooni jaoks loodud malli — palun pöördu juristi poole.“
3. Kui malli manifestis on meta.display_name, kasuta seda kasutajale esitamisel.
4. Pane tähele kasutaja täpset avasoovi — sõnumit, mis selle oskuse käivitas. Salvesta see kui session_request, et kasutada seda küsitluse logis (faas 3d).
Kõigepealt kontrolli vahemällu salvestatud manifesti: laadi malli kataloogist manifest.yaml. Kui see on olemas, sisaldab schema_version: 2 ja mallifail ei ole uuem kui manifesti ajatempel analyzed_at (kontrolli ka config.yaml, kui see on olemas), on manifest kehtiv — liigu edasi 3. faasi.
Kui manifest puudub, on aegunud või selle schema_version < 2, käivita malli kataloogil oskus coquill-analyzer. See loob manifesti uuesti.
Laadi saadud manifest ja jätka — see on küsitluse ainus tõeallikas.
Kui analüsaator on lõpetanud, lisa küsitluse logisse tool_use kirje, mis salvestab väljakutse.
Enne 3. faasi liikumist vaata üle kõik analüsaatori tagastatud hoiatused:
variable_count: 0): Kohene peatus. Ütle kasutajale: „Sellel mallil ei paista olevat täidetavaid välju — see võib olla vale fail või mall tuleb uuesti üles ehitada. Palun kontrolli ja proovi uuesti.“ Ära liigu küsitluse juurde.tool_use kirjesse ja jätka — need ei blokeeri küsitlust.v2 manifest sisaldab: variables (tingimusteta), conditionals (igaühel condition, gate_type, gate_variable/gate_value, if_variables/else_variables), loops (igaühel collection, loop_var, label, min_items, variables), dependencies (väravamuutuja -> sõltuvate muutujate kaart) ning valikulised jaotised groups, validation, meta.
Pärast manifesti laadimist kontrolli, kas see sisaldab jaotisi conditionals, loops või validation. Kui ükskõik milline neist on mittetühi, loe käsitlemisjuhiste saamiseks küsitluse täpsemat juhendit:
- Tee: .claude/skills/coquill/advanced_interview.md
- Plugina tee: ${CLAUDE_PLUGIN_ROOT}/.claude/skills/coquill/advanced_interview.md
Kui manifestis pole ühtegi neist (lihtne mall — ainult tingimusteta muutujad), jäta juhendi lugemine vahele. Allpool kirjeldatud faasid 4a, 5a ja 5c on piisavad.
Enne mis tahes küsimuste esitamist koosta sisemine küsitlusplaan. ÄRA näita seda plaani kasutajale — see on sinu arutlussamm, mis tagab, et küsitlus tundub loomulik.
Loe manifesti jaotist groups.
Kui groups on olemas (malli arendaja on selle andnud faili config.yaml kaudu):
- Kasuta rühmi küsitluse struktuurina sellisena, nagu need on.
- Iga rühm määrab oma muutujad ja võib sisaldada condition (tingimuslik värav) või loop (tsükli kogumi nimi).
- Veendu, et väravamuutujad küsitakse enne rühmi, mida need kontrollivad.
Kui groups puudub, rühmita tingimusteta muutujad automaatselt loogilistesse rühmadesse seotuse alusel (seotud väljad koos). Tingimuslike ja tsüklirühmade kohta vaata küsitluse täpsemat juhendit.
Koosta iga rühma jaoks loomulikud küsimused:
- Kui manifest annab muutujale question, kasuta seda.
- Muul juhul arvesta konteksti saamiseks dokumendi liiki ja sõnasta küsimus vestluslikult.
- choice tüüpide puhul: esita saadaolevad valikud. boolean puhul: sõnasta jah/ei-küsimusena. date puhul: lisa format_hint, kui see on antud.
- default väärtusega muutujate puhul: maini vaikeväärtust (nt „Millal see peaks jõustuma? (vaikimisi täna)“).
Loo sisemine küsitluse logi — järjestatud kirjete jada, millele lisad kirjeid
faasides 4 ja 5. Seda ei näidata kasutajale kunagi küsitluse ajal. Faasis 7a serialiseerid
selle enne oskuse coquill-transcriber käivitamist töökausta faili interview_log.json.
Algata logi ühe kirjega:
type: session_start
request: <1. faasis salvestatud session_request — kasutaja sõnasõnaline avasõnum>
template:
Igal allpool toodud kirjetüübil peab olema väli timestamp (ISO 8601 kuupäev-kellaaeg, nt
2026-03-01T12:03:00+08:00). question kirjete puhul on ajatempel see, millal Claude küsimuse
saatis; answer kirjete puhul see, millal kasutaja vastus saabus.
Faasides 4 ja 5 lisatavad kirjetüübid:
prefill — avasõnumist tuletatud muutujad (loend kujul {name, label, value})
group_start — alustab nimega rühma (branch: "if"/"else"/"skipped" tingimuslike puhul)
question — ühes käigus esitatud tegelik(ud) küsimus(ed); lisa questions (küsitud muutujate nimede massiiv)
clarification — kasutaja sisuline küsimus + Claude'i vastus (user_question, claude_response)
answer — tegelik lõplik vastus, peaaegu sõnasõnaline
validation_retry — uuesti küsimine pärast ebaõnnestunud valideerimist (reason)
skip — vahele jäetud muutuja/rühm koos inimloetava põhjusega
loop_item — kinnitatud tsükli element (item_index, question, answer, values dict)
correction — 5. faasi muudatus (field, label, old_value, new_value, valikuline note)
Kirjetüüp, mis lisatakse oskuse või skripti käivitamisel: tool_use — salvestab oskuse/skripti väljakutse: tool: oskuse või skripti nimi (nt "coquill-analyzer", "coquill-renderer", "coquill-transcriber") action: lühikirjeldus (nt "Parsed template and generated manifest") timestamp: millal käivitati (ISO 8601) completed_at: millal lõpetati (ISO 8601)
See logi on piiratud ÜHE dokumendi koostamisega. Lähtesta see sammu 3d alguses alati, kui alustad uue dokumendi ettevalmistamist.
Vii küsitlusplaan ellu rühmade kaupa. Lisa kõigi allfaaside jooksul küsitluse logisse kirjeid vastavalt faasi 3d määratlustele.
Eeltäidetud muutujad: kui kasutaja avasõnum või varajane vastus sisaldas muutujate väärtusi (nt „Mul on vaja NDA-d ettevõttele TechCorp“ annab party_name = TechCorp), lisa enne esimest group_start kirjet prefill kirje. Kui need muutujad hiljem esile tulevad, lisa skip kirje, mis märgib, et need olid eeltäidetud.
Iga tingimusteta rühma puhul:
1. Esita rühm koos koostatud küsimus(t)ega.
2. Parsi kasutaja vastused ja seo need õigete muutujatega.
3. Valideeri tüübi järgi:
- text — mis tahes mittetühi string
- date — näeb välja nagu kuupäev mis tahes mõistlikus vormingus
- number — on numbriline (võib sisaldada valuutasümboleid, komasid)
- email — on e-posti põhivormingus (sisaldab @-märki)
- phone — näeb välja nagu telefoninumber
- boolean — jah/ei, true/false või sarnane jaatav/eitav
- choice — vastab ühele väärtusele loendis choices
4. Kui valideerimine ebaõnnestub, küsi uuesti selge juhisega.
5. Kui kasutaja annab osalise vastuse, kinnita, mille said, ja küsi puuduvaid välju.
6. Kui muutujal on default ja kasutaja väärtust ei anna, kasuta vaikeväärtust. Erivaikeväärtus "today" tähendab praegust kuupäeva.
7. Salvesta vastused muutujate sõnastikku.
8. Eskaleerimiskontroll: kui muutuja manifestimääratlus sisaldab välja escalate_if (nt escalate_if: {reason: "jurisdiction-specific"}), näita seotud eskaleerimissõnumit kasutajale kohe pärast tema vastuse kogumist. Ära liigu eskaleerimislipust vaikselt mööda — kasutaja peab seda kinnitama, enne kui küsitlus jätkub.
Logi tegelik suhtlus — lõplik küsimus nii, nagu see esitati, ja lõplik vastus nii, nagu see anti. Ära rekonstrueeri iga mikrokäiku; salvesta sisu.
Vaata küsitluse täpsemat juhendit. Jäta see faas vahele, kui manifestis pole conditionals.
Vaata küsitluse täpsemat juhendit. Jäta see faas vahele, kui manifestis pole loops.
Hoia kogu küsitluse vältel üht muutujate sõnastikku. See sisaldab:
- Lihtsaid võti-väärtus paare tingimusteta ja tingimuslike muutujate jaoks
- Sõnastike loendi väärtusi tsüklikogumite jaoks
- Tõeväärtusmuutujaid salvestatuna kujul true/false (mitte stringidena „yes“/„no“)
Esita selge kokkuvõte KÕIGIST kogutud väärtustest rühmade kaupa korrastatuna. Tingimuslike/tsükliväärtuste kuvamise vormingu kohta vaata küsitluse täpsemat juhendit.
Vaata küsitluse täpsemat juhendit. Jäta see faas vahele, kui manifestis pole validation reegleid.
Palu kasutajal väärtused kinnitada või parandada. Kasutaja saab:
Väravamuutuse kaskaadide ja tsükli elementide muutmise kohta vaata küsitluse täpsemat juhendit.
Pärast mis tahes muudatusi kuva uuendatud kokkuvõte uuesti ja valideeri uuesti. Jätka, kuni kasutaja kinnitab.
Pärast iga muudatust, mille kasutaja kinnitamise ajal teeb, lisa küsitluse logisse correction kirje:
- field, label, old_value, new_value
Kui kinnitus on saadud, käivita oskus coquill-renderer järgmistega:
- Malli tee
- Vorming (docx, html või markdown)
- Täielik muutujate sõnastik (sh tõeväärtused Pythoni kujul True/False ja tsükliandmed sõnastike loenditena)
- Väljundkataloog (output/)
- draft_notice väärtusega "DRAFT — REQUIRES LEGAL REVIEW" — renderdaja lisab selle dokumendi sisu esimeseks reaks, et ühtegi väljundit ei saaks pidada lõplikuks, heakskiidetud dokumendiks
Renderdaja:
1. Koostab dokumendi (docx või html + pdf)
2. Valideerib väljundit täitmata {{ }} kohatäidete või renderdamata {% %} juhtsiltide suhtes
3. Tagastab väljundi tee(d) ja valideerimisoleku
Kui renderdaja on lõpetanud, lisa küsitluse logisse tool_use kirje, mis salvestab väljakutse.
Kui valideerimine ebaõnnestub (leiti täitmata kohatäiteid või renderdamata silte): - Teavita kasutajat probleemist - Paku puuduvate väärtuste uuesti kogumist ja uuesti koostamist - ÄRA väljasta täitmata kohatäidetega dokumenti
Samm 7a-i: serialiseeri küsitluse logi töökausta faili interview_log.json kujul {"schema_version": 2, "entries": [...]}, kasutades json.dump parameetritega ensure_ascii=False, indent=2. Kirjete kujud on määratletud faasis 3d.
Samm 7a-ii: käivita oskus coquill-transcriber järgmistega:
- Küsitluse logi tee: <job_folder>/interview_log.json
- Manifesti tee: <template_dir>/manifest.yaml
- Töökaust: <job_folder>
- Koostatud väljundfailide nimed (komaga eraldatud baasnimed)
- Lõpu kuupäev/kellaaeg (praegune aeg, ISO 8601)
Transkribeerija kirjutab töökausta faili transcript.md ja kinnitab õnnestumise.
Kui transkribeerija on lõpetanud, lisa küsitluse logisse tool_use kirje, mis salvestab väljakutse. (See kirje salvestatakse täielikkuse huvides; see ei ilmu selle seansi transkriptsiooni, kuna transkribeerija on juba käivitatud.)
transcript.md.“interview_log.json ja transcript.md, mis võivad sisaldada kaitstud kliendiinfot. Ära commit'i kausta output/ jagatud repositooriumisse ega versioonihaldussüsteemi, millele on juurdepääs volitamata isikutel.“Kui kasutaja valmistab ette veel ühe dokumendi, loob faas 3d uue küsitluse logi. Iga interview_log.json ja transcript.md on piiratud täpselt ühe dokumendiga.
docxtpl (mitte toorest python-docx'i); HTML kasutab jinja2 + weasyprint PDF-i jaoks; markdown kasutab jinja2 + markdown + weasyprint (PDF on pehme tõrkega — väljasta alati .md).docx2pdf (MS Word või LibreOffice). Kui see pole saadaval, väljasta hoiatusega ainult .docx.schema_version puudub/< 2.True/False, mitte stringid nagu "yes" või "no".Kui oskus töötab Claude Code'i pluginana (st CLAUDE_PLUGIN_ROOT on määratud), on alamoskused nimeruumiga. Kui paljad oskuste nimed (coquill-analyzer, coquill-renderer, coquill-transcriber) ei lahene, kasuta nimeruumiga vorme: coquill:coquill-analyzer, coquill:coquill-renderer ja coquill:coquill-transcriber.