Agent skill

Ask

by JetXu-LLM in JetXu-LLM/DocMason

Accept an ordinary user question inside a DocMason workspace, route it to the right inner workflow, and preserve conversation-native logs automatically.

Apache-2.0Auto-check passedKnowledge Management

Install Ask

skills CLI
$ npx skills add JetXu-LLM/DocMason --skill ask -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install JetXu-LLM/DocMason ask --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/JetXu-LLM/DocMason.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/canonical/ask .claude/skills/ask && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ask
GitHub stars
147
Token cost
~7.1k tokens
SKILL.md length
3,327 words
Files
2
Skills in repo
15
Repo updated
First seen
Licence
Apache-2.0

At a glance

Accept an ordinary user question inside a DocMason workspace, route it to the right inner workflow, and preserve conversation-native logs automatically.

  • Works in 8 steps: Treat one ordinary user message as one… → Open or reuse the canonical ask turn… → During open or same-turn reuse, let the… → …
  • Knowledge Management work in your project
  • SKILL.md covers Front-Door Law, Turn Terms, Canonical Ask Contract and Required Capabilities, plus 4 more sections
  • Calls python

What it does

Ask is an agent skill from JetXu-LLM/DocMason. Accept an ordinary user question inside a DocMason workspace, route it to the right inner workflow, and preserve conversation-native logs automatically.

Its SKILL.md is about 7.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `workflow.json`).

It sits in Knowledge Management. The repository describes itself as: DocMason is a repo-native agent that turns your complex office files into a local LLM knowledge base and your second brain. The repo is the app. Codex is the runtime. The licence is Apache-2.0.

When your agent uses it

  • Knowledge Management work in your project

Example prompts

  • “/ask”

Requirements

  • Python 3

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Treat one ordinary user message as one canonical ask turn, and run steps 2 through 4 as the governed open or same-turn reuse phase before…
  2. Open or reuse the canonical ask turn through the supported path defined in Canonical Ask Contract.
  3. During open or same-turn reuse, let the governed ask path choose the smallest evidence basis that can support the answer correctly and…
  4. During that same governed preanswer step inside open, check workspace state only when the answer really depends on workspace truth.
  5. When governed preanswer returns status = execute, let the canonical ask turn continue through the narrowest ask-routed inner workflow that…
  6. Route into the chosen ask-routed inner workflow and let it own the evidence loop.
  7. Complete the turn through the supported completion path.
  8. Return the result cleanly.

What it can do on your machine

Read from SKILL.md and the folder at commit 362417b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ask loads about 7.1k tokens when it runs. Until then it costs about 39 tokens; SKILL.md has 3,327 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~39
When it runs · the whole SKILL.md, loaded when a task matches
~7.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from JetXu-LLM/DocMason at commit 362417b, republished under its Apache-2.0 licence (© JetXu-LLM). 3,327 words, ~7,134 tokens.

Download SKILL.mdSave it as .claude/skills/ask/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
ask
description
Accept an ordinary user question inside a DocMason workspace, route it to the right inner workflow, and preserve conversation-native logs automatically.

Ask

ask is the canonical skill at skills/canonical/ask/SKILL.md. It is the user-facing top-level workflow for ordinary natural-language requests. Use this skill as the default top-level workflow for a new ordinary user request in this workspace unless the request is clearly explicit operator work.

The user should be able to ask naturally. They should not need to name internal workflow IDs or repository mechanics first.

If the request is clearly an explicit setup, status, sync, adapter-maintenance, or operator-review request, switch to the matching top-level workflow instead of forcing it through ask.

Front-Door Law

  • Reading this skill is not legal ask execution.
  • Native-thread reconciliation is not legal ask execution.
  • ask itself remains the only ordinary natural-language front door, and a request counts as ordinary front-door execution only after it has been opened as a canonical ask turn under this workflow.
  • Plan Mode or a similar host planning/collaboration mode should not discourage the host from opening canonical ask for an ordinary user request; if the current mode still blocks ask, the host should use a concise in-band alert or approval question and continue the same user task in the most natural available way rather than silently defaulting to operator-direct or side-path work.
  • See Canonical Ask Contract below for the exact ordinary-ask opening and completion rules. Generated adapter guidance may restate that contract, but it does not replace this workflow surface, and compatible hosts must use that supported entry surface rather than helper stitching, ad hoc probing, or direct lifecycle calls.
  • Direct evidence commands such as public retrieve or trace remain legal operator tools, but they do not complete the ordinary ask contract by themselves.

ask owns front-door legality, same-turn governance, workspace gating, and routing. The routed inner workflow owns the deeper evidence loop.

Turn Terms

  • native turn means the host's own chat turn before DocMason opens canonical ask handling.
  • canonical ask turn means the governed DocMason turn for the current request.
  • runtime ownership means the current request has been opened into that canonical ask turn and is now governed by DocMason.
  • native ledger means host-side audit capture that is not canonical ask truth by itself.
  • interaction-ingest means the runtime holding area for reconciled host activity before any governed promotion.
  • A practical sign that canonical ask really opened is that the request leaves linked runtime artifacts rather than only a host-visible reply, typically under runtime/answers/, runtime/runs/, and runtime/logs/.

Canonical Ask Contract

  • This section is the authoritative ordinary-ask execution contract for compatible hosts.
  • workflow.json remains routing metadata. It does not define the executable host call contract.
  • A request counts as an opened canonical ask turn only when both are true:
    • the supported ask entry surface has returned stable conversation_id, turn_id, run_id, answer_file_path, and log_context
    • the underlying turn has been upgraded to front_door_state = canonical-ask
  • For compatible-host execution, the supported ask entry surface is the hidden host wrapper:
bash
cat <<'JSON' | ./.venv/bin/python -m docmason _ask
{ ...payload... }
JSON
  • Hidden wrapper actions:
    • open
    • progress
    • finalize
  • open request envelope:
json
{
  "action": "open",
  "question": "<user question>",
  "host_provider": "<provider>",
  "host_thread_ref": "<stable host thread ref>",
  "host_identity_source": "<host identity source>",
  "semantic_analysis": {
    "question_class": "answer",
    "question_domain": "workspace-corpus",
    "route_reason": "<one concise reason>"
  }
}
  • Minimal host hinting rule:
    • semantic_analysis is best-effort. For an ordinary native Codex ask, question_class, question_domain, and one concise route_reason are usually enough.
    • classify by deliverable and evidence basis, not by perceived difficulty:
      • question_class chooses workflow shape. It is not a difficulty score: use answer for a direct answer, explanation, or source-backed summary; use composition for a new evidence-backed work product or synthesis; use retrieval, provenance, or runtime-review only for explicit evidence, citation, or runtime-review requests.
      • question_domain chooses evidence basis. It is not a mirror of question_class: prefer workspace-corpus, external-factual, or general-stable when one of those is the real basis, and reserve composition for composition-shaped evidence planning rather than setting it merely because question_class = composition.
      • a compare, draft, or plan request over workspace materials is therefore usually question_class = composition with question_domain = workspace-corpus.
    • open normalizes missing supported routing fields, derives defaults such as support_strategy, and may refine reference resolution or workspace notices from repository truth.
  • Native Codex fast path:
    • for an ordinary request on the native Codex path, once repo-local .venv is available, call hidden open directly with best-effort semantic_analysis
    • prefer the real native CODEX_THREAD_ID identity from the execution environment; do not hand-fill placeholder host thread references such as codex-desktop-thread or codex-native-thread
    • do not read other workflow skills, workspace-status, workspace-bootstrap, source search, implementation source, or tests first just to decide whether canonical ask may open, whether a named source exists, or which semantic_analysis fields are accepted
    • use those surfaces only after open returns a governed blocker, waiting state, or explicit operator route
  • After open, preserve the returned conversation_id, turn_id, run_id, answer_file_path, log_context, and support_contract for the rest of the same canonical ask turn.
  • Hidden wrapper status meanings:
    • execute means canonical ask is open and the host should continue through the chosen inner workflow.
    • awaiting-confirmation means pause the same turn and wait for the user's confirmation reply.
    • awaiting-user-decision means pause the current work for a material decision that only the user can authorize. It never implies a timeout, default, or skip.
    • waiting-shared-job means pause the same turn and wait for governed shared-job settlement.
    • completed means the turn is committed and a final business answer may be returned.
    • boundary means the turn is committed as a governed boundary and that boundary reply may be returned.
    • blocked means no final business answer may be returned yet.
  • Hidden wrapper next_step is a derived convenience field and should stay aligned with that status law:
    • execute -> continue-inner-workflow
    • awaiting-confirmation -> wait-for-user-confirmation
    • awaiting-user-decision -> wait-for-user-decision
    • waiting-shared-job -> wait-for-shared-job
    • completed -> return-final-answer
    • boundary -> return-boundary-answer
    • blocked -> do-not-return-final-answer
  • Hidden wrapper result_explanation is a derived convenience field, not a new truth surface.
    • When result_explanation.show_to_user = true for a blocker or evidence boundary, translate its summary, why, and next_step into one concise user-facing explanation in the user's language.
    • Do not append it to a successful copy-ready artifact; successful completion returns only the exact business answer plus the separate user_status_line.
    • When show_to_user = false, do not add extra result-explanation prose.
    • Do not write result_explanation text into the canonical answer markdown.
  • Hidden wrapper admissibility_repair is present only for same-turn repairable finalize failures.
    • Treat it as repair metadata for the next rewrite/retrace attempt, not as permission to bypass trace or admissibility.
  • In compatible-host execution, open or same-turn reuse already performs governed preanswer work:
    • question classification and support-strategy selection
    • workspace gating and knowledge-base freshness checks
    • initial inner-workflow routing plus any confirmation or waiting-state settlement
  • After open, treat the returned status, question_class, question_domain, analysis_origin, route_reason, inner_workflow_id, support_strategy, reference_resolution, source_scope_policy, support_contract, and notices as the source of truth for the next step. Do not re-derive them from side-path probing before honoring that result.
  • Retrieve / trace binding rule:
    • when using public docmason retrieve or docmason trace inside the same canonical ask turn, export each returned log_context field as DOCMASON_<FIELD> and then call the public command normally
    • in chat-host execution, prefer --json --compact for interactive inspection; if full nested retrieve or trace detail is genuinely needed, redirect full --json to a local file and inspect it selectively instead of loading the raw payload straight into the live chat context
    • treat compact payloads as the stable host-facing inspection contract; do not rebuild alternate schemas with ad hoc jq assumptions such as .matches
    • compact retrieve inspection should normally start from:
      • session_id
      • results
      • reference_resolution
      • source_scope_policy
    • compact trace inspection should normally start from:
      • trace_id
      • session_id
      • answer_state
      • reference_resolution
      • source_scope_policy
      • issue_codes
    • do not switch to direct Python helpers such as prepare_ask_turn(), complete_ask_turn(), or trace_answer_file(...) as a substitute for the supported path
  • Example retrieve / trace binding:
bash
export DOCMASON_CONVERSATION_ID="<conversation_id>"
export DOCMASON_TURN_ID="<turn_id>"
export DOCMASON_RUN_ID="<run_id>"
export DOCMASON_ENTRY_WORKFLOW_ID="ask"
export DOCMASON_INNER_WORKFLOW_ID="<inner_workflow_id>"
export DOCMASON_FRONT_DOOR_STATE="canonical-ask"

./.venv/bin/python -m docmason retrieve "<query>" --json --compact
./.venv/bin/python -m docmason trace --answer-file "<answer_file_path>" --json --compact
  • progress request envelope:
json
{
  "action": "progress",
  "conversation_id": "<conversation_id>",
  "turn_id": "<turn_id>",
  "completion_status": "covered | blocked",
  "hybrid_refresh_summary": { "...": "..." }
}
  • A material professional judgment may instead persist a decision gate:
json
{
  "action": "progress",
  "conversation_id": "<conversation_id>",
  "turn_id": "<turn_id>",
  "decision_frontier": {
    "class": "judgment-authority-gap | high-cost-expression-choice",
    "question": "<material decision question>",
    "why_user_is_required": "<why evidence and reasoning cannot decide it>",
    "evidence_boundary": "<what evidence establishes and cannot decide>",
    "options": [
      {
        "id": "<stable option id>",
        "label": "<short label>",
        "impact": "<real downstream consequence>",
        "recommended": true
      },
      {
        "id": "<stable option id>",
        "label": "<short label>",
        "impact": "<real downstream consequence>",
        "recommended": false
      }
    ],
    "affected_outputs": ["<specific model or artifact scope>"],
    "invalidates": []
  }
}
  • A legal gate has two or three real options, explains their downstream impact, marks exactly one current recommendation, and names the affected output scope. Do not persist a vague or non-material question.

  • After progress returns awaiting-user-decision, present the same gate through the host's native Plan or structured-input UI, without a timeout or default, and wait. If no such UI is available, ask the one material question concisely in-band.

  • The user's answer opens a new linked turn with continuation_type=decision-resolution, the exact gate_id as resolves_gate_id, and either one legal option_id or a non-empty free_form decision. Never settle the old turn in place or reinterpret an unrelated message as consent.

  • completion_status is optional when the caller is only re-entering a waiting-shared-job turn to let the hidden wrapper reconcile deterministic repo-owned shared-job truth.

  • supply completion_status only when the host is actively settling a still-unsettled governed multimodal refresh.

  • when the current-turn hybrid_refresh_work.json lists render or focus-render assets and the host can inspect images, inspect the relevant assets lightly and include render_inspection_used plus inspected_render_assets in hybrid_refresh_summary.

  • when a turn is paused in waiting-shared-job, re-enter through hidden open reuse, hidden progress, or hidden finalize; do not grep runtime/control_plane/ or shared-job files manually.

  • finalize request envelope:

json
{
  "action": "finalize",
  "conversation_id": "<conversation_id>",
  "turn_id": "<turn_id>",
  "answer_text": "<exact final business answer>",
  "answer_file_path": "<answer_file_path>",
  "response_excerpt": "<short excerpt>",
  "session_ids": ["<selected_session_id>"],
  "trace_ids": ["<selected_trace_id>"],
  "workflow_outcome": {
    "support_basis": "kb-grounded | mixed | external-source-verified | model-knowledge | governed-boundary",
    "session_ids": ["<selected_session_id>"],
    "trace_ids": ["<selected_trace_id>"],
    "bundle_paths": ["<composition bundle path>"]
  }
}
  • answer_text is the preferred terminal input. The wrapper writes it atomically to the canonical answer path, binds the exact digest, reuses only a digest-matching trace, and runs one exact trace when necessary. The successful response keeps answer_text clean and returns one separate user_status_line; internal IDs and support state remain in governance_detail. When the exact final answer is already present at answer_file_path, callers may omit answer_text and use the file-based handshake below.

  • session_ids and trace_ids are optional advanced-caller fields. Omit them when the turn has exactly one ask-owned retrieve session and one final trace candidate. Supply them only when the caller has already selected the canonical pair among multiple ask-owned candidates.

  • workflow_outcome is the preferred finalize-time handoff for workflow-owned facts. Supply it when the inner workflow already knows the correct support_basis, selected session_ids / trace_ids, support-manifest linkage, bundle linkage, or bounded degradation metadata. Older callers may keep using the compatible top-level finalize fields.

  • Legal closure handshake for one canonical ask turn:

bash
./.venv/bin/python -m docmason trace --answer-file "<answer_file_path>" --json --compact

cat <<'JSON' | ./.venv/bin/python -m docmason _ask
{
  "action": "finalize",
  "conversation_id": "<conversation_id>",
  "turn_id": "<turn_id>",
  "answer_file_path": "<answer_file_path>",
  "response_excerpt": "<short excerpt>"
}
JSON
  • Completion rule:
    • only completed or boundary permits a final business reply to the user
    • execute, awaiting-confirmation, awaiting-user-decision, waiting-shared-job, and blocked do not

Required Capabilities

  • local file access
  • shell or command execution
  • ability to inspect structured JSON output
  • ability to inspect rendered images when the answer boundary requires it

If the environment cannot satisfy those capabilities, stop and explain the blocker instead of improvising.

Show full SKILL.md (1,684 more words)Show less

Procedure

  1. Treat one ordinary user message as one canonical ask turn, and run steps 2 through 4 as the governed open or same-turn reuse phase before any inner workflow execution.
    • keep one live user question mapped to one canonical turn
    • reuse the live turn when the same question is continuing
    • when the same live turn and the same active run are re-entered, reuse the existing governed preanswer result instead of restarting preanswer governance
    • return in the user's language unless they ask for another language
  2. Open or reuse the canonical ask turn through the supported path defined in Canonical Ask Contract.
    • reconcile any active native thread, and keep that reconciliation in the native ledger and interaction-ingest path until canonical ask ownership is open
    • before calling open, form a thin agent-authored work_brief from the user's actual goal and medium; include only fields that matter for this turn: deliverable and use, audience, in/out scope, success criteria, distinctions that must survive, named evidence and exemplars, confirmed method/storyline/expression grammar, and high-cost artifact risk
    • simple work may use an empty or very small brief; never ask the user to fill a form and never replace professional framing with keyword inference in deterministic runtime code
    • pass the brief inside best-effort semantic_analysis; keep one concise route_reason, and set needs_latest_workspace_state only when fresh local workspace truth is actually required, and include compact evidence_requirements only when the question needs channel guidance
    • when the user explicitly revises a prior result, pass its exact revision_of turn id and the narrow continuation_type, revision_scope, and affected_outputs; adjacency in the same chat is not sufficient authority to inherit evidence or accepted scopes
    • when the user answers a persisted gate, pass the exact resolves_gate_id plus either a legal option_id from that gate or an explicit non-empty free_form decision; do not reinterpret arbitrary later text as gate approval
    • let open normalize supported routing fields, resolve user-native source references when the user names a document, path, page, slide, sheet, heading, or similar locator, and return the governed turn binding
  3. During open or same-turn reuse, let the governed ask path choose the smallest evidence basis that can support the answer correctly and truthfully before deeper workflow execution.
    • workspace-corpus -> KB-first
    • composition -> KB-first with explicit evidence planning
    • external-factual -> web-first
    • general-stable -> model knowledge when the boundary is explicit
  4. During that same governed preanswer step inside open, check workspace state only when the answer really depends on workspace truth.
    • use runtime/bootstrap_state.json as the cached readiness marker
    • treat workspace-dependent ask as legal only when the prepared environment is self-contained
      • self-contained means the repo-local steady-state runtime is trusted for ordinary ask work
    • if the environment is mixed or degraded, let the ask helper repair or surface the governed boundary instead of answering from a partially trusted runtime
    • allow safe silent bootstrap or repair when the workspace-dependent path can continue safely
    • if the environment is ready but no published knowledge base exists yet, route to knowledge-base-sync instead of bluffing a workspace-grounded answer
    • if the published knowledge base is stale but still usable, answer from the published corpus with one concise freshness notice
    • if fresh workspace state is genuinely needed, let the ask helper govern prepare or sync rather than improvising it in the workflow
    • do not turn simple exact-source asks into answer-critical sync just because pending interaction promotion backlog exists
    • when the user has already narrowed to one exact source or unit, treat pending interaction backlog as an advisory notice unless the current turn truly depends on interaction-derived evidence
    • when workspace freshness depends on live local files, use repo-side live corpus discovery for original_doc/ rather than git-tracked repo search
    • if prepare or sync becomes a confirmation-required shared job, pause the same turn in awaiting-confirmation
      • accept short same-session yes or no replies as approve or decline
        • yes continues the same task
        • no commits the same turn as abstained + governed-boundary
    • if the same-session turn is already prepared, awaiting-confirmation, or waiting-shared-job, prefer reusing that governed state over rerunning shared-state mutation
    • while a turn is in waiting-shared-job or awaiting-confirmation, do not bypass the governed path by answering from original_doc/, knowledge_base/staging/, or .staging-build
  5. When governed preanswer returns status = execute, let the canonical ask turn continue through the narrowest ask-routed inner workflow that matches the ask.
    • if the same turn is still paused, blocked, or has been routed to workspace-bootstrap or knowledge-base-sync, honor that governed state first instead of forcing one of the ask-routed evidence workflows
    • for answer-eligible ask-time execution, the workflow must choose the most appropriate one of the following 5 inner workflows and continue through that path
    • direct supported answer -> grounded-answer
    • evidence-backed drafting, planning, or research -> grounded-composition
    • evidence-only request -> retrieval-workflow
    • provenance or citation request -> provenance-trace
    • runtime review request -> runtime-log-review
  6. Route into the chosen ask-routed inner workflow and let it own the evidence loop.
    • keep workspace commands sequential inside the live turn
    • keep the same canonical turn ownership through the inner workflow; retrieve, trace, raw-source inspection, or internal helper probing may support that live turn, but they do not replace canonical ask ownership or its completion rules
    • use published KB artifacts first when they already expose the needed evidence channels
    • treat published-KB answering as the ordinary ask path; governed Lane B follow-up remains sync/publication-owned and may surface as freshness or degradation notice, but it is not a separate host-driven ask step
    • treat the published KB as the primary evidence surface: inspect retrieved text, structure, notes, media, and artifact metadata first, then inspect cited focus_render_assets or render spans when the question is genuinely visual or layout-sensitive, and only then consider governed refresh or source fallback
    • start execution with a short support ledger derived from support_contract:
      • which source boundary must survive
      • which comparison sources must both survive
      • which published evidence channels are required
      • whether a single contract-repair chance exists for this turn
    • keep approximate or unresolved reference notices explicit
    • normalize the additive thin work_brief, revision lineage, accepted scopes, and turn evidence packet before deciding whether evidence work is necessary
    • treat user-named files and host attachments as current turn evidence by default, but keep their role, authority, freshness, hash and supersession semantics explicit; do not promote them into the durable KB merely because they were used once
    • distinguish evidence-gap, reasoning-uncertainty, and judgment-authority-gap: solve the first two autonomously; persist a decision gate only for the third or for a genuinely expensive expression choice
    • for constraint-update and evidence-neutral decision-resolution, inherit legal evidence, skip sync and retrieval, preserve unrelated accepted scopes, retrace only the exact revised answer or artifact, and finalize
    • record an accepted scope only when the current user explicitly accepted it and the host sets accepted_by_user: true; reopen it only after explicit user authority with reopened_by_user: true. Dependency drift marks a scope at-risk but never silently reopens or replaces it
    • for evidence-refresh or mixed, retrieve only the evidence delta and invalidate only explicitly affected or dependency-linked outputs
    • unresolved relevance alone does not authorize global sync; use task-scoped freshness and expose a boundary when critical target freshness cannot be established
    • let the routed inner workflow own retrieval, trace, render inspection, and answer or composition drafting
    • if published artifacts are still insufficient because of hard-artifact semantic gaps, let the canonical routed path enter one governed narrowed hybrid refresh instead of improvising raw source fallback
      • this ask-owned narrowed hybrid refresh is the Lane C path and is the only ordinary ask follow-up settled through hidden progress
      • after a covered settlement, rerun retrieve and trace exactly on the post-refresh evidence; if the result is commit-admissible but still only partially supported, finalize honestly as partially-grounded instead of starting a second refresh
    • if that governed path becomes a shared wait or blocked boundary, keep the same turn paused or committed through the existing ask control-plane states rather than opening a side path
  7. Complete the turn through the supported completion path.
    • write only the final answer under runtime/answers/<conversation_id>/<turn_id>.md
    • keep scratch work under runtime/agent-work/ when needed
    • follow the finalize handshake in Canonical Ask Contract: run the final trace on the exact answer-file version, then call hidden finalize, passing selected artifact IDs only when the turn is ambiguous
    • if the first finalize attempt returns status = execute with a repairable support_fulfillment, keep the same turn open, do one contract-aware rewrite and retrace, then finalize once more
    • do not open a second or unbounded repair loop; the second finalize attempt must close honestly
    • let the commit barrier run only after the admissibility gate passes
    • preserve answer_state, support_basis, optional support_manifest_path, and linked session or trace IDs
  8. Return the result cleanly.
    • direct answer when supported
    • explicit non-answer boundary when not
    • one concise freshness or waiting note only when it materially helps the user
    • return the business answer_text unchanged, followed outside the artifact by exactly one concise completion line; use user_status_code as the stable meaning and render the line naturally in the user's language (completed-and-verified or completed-with-evidence-boundary)
    • show governance_detail only for blockers, evidence boundaries, diagnostics, or explicit user inspection; never append trace IDs, manifest paths, repair codes, or release-entry notices to a successful copy-ready artifact

Escalation Rules

  • Do not require the user to name a skill or repository command before this workflow can run.
  • Do not turn natural-language routing into large keyword tables or a growing odd-question taxonomy.
  • Do not create a replacement turn when the same-turn confirmation or waiting path is available.
  • Do not relabel approximate references as exact.
  • Do not treat external-source-verified, model-knowledge, or governed-boundary outcomes as product failures just because the KB path was not fully grounded.
  • If published KB artifacts already satisfy the evidence need, do not reopen original_doc/ or rerender source files by reflex.

Completion Signal

  • The workflow is complete when the user question has been routed through one canonical turn, the resulting logs are linked correctly, and the final answer or explicit boundary has been returned cleanly.

Notes

  • A reconciled native turn is still only host-side context until the matching canonical ask turn has been opened.
  • grounded-answer and grounded-composition remain inner specialist workflows.
  • Host Hooks are optional accelerators. Never assume their context injection or one-shot Stop continuation ran; without them, follow the same canonical contract directly.
  • Tracked repo search, live corpus discovery, knowledge-base artifact discovery, and runtime artifact discovery are different surfaces; do not substitute one for another silently.

© JetXu-LLM, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/canonical/ask of JetXu-LLM/DocMason.

  • SKILL.md
  • workflow.json

Open the folder on GitHubat commit 362417b

Compare with similar skills

Ask next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ask compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ask this skillJetXu-LLM/DocMason147—~7.1kAutomated safety check: PassApache-2.0
Logseq Review Workflow Evallogseq/logseq45k—~1kAutomated safety check: PassAGPL-3.0
Baoyu URL To Markdownsdyckjq-lab/llm-wiki-skill2.5k2 repos~3.2kAutomated safety check: PassNone
Obsidian CLIAtmosphere/atmosphere3.8k13 repos~795Automated safety check: PassApache-2.0
Esm Cjs Risk Scanlogseq/logseq45k—~3.3kAutomated safety check: PassAGPL-3.0
Capture Conversationoutline/outline41k—~474Automated safety check: PassCustom licence

Similar skills

  • Compare two revisions of the Logseq logseq-review-workflow skill by running the same review prompt against isolated before and after skill snapshots, collecting both outputs, and producing a…

    45k GitHub stars~1k tokensUpdated today
    Knowledge ManagementAuto-check passed
  • Baoyu URL To Markdown

    sdyckjq-lab/llm-wiki-skill

    Fetch any URL and convert to markdown using Chrome CDP. An agent skill from sdyckjq-lab/llm-wiki-skill.

    2.5k GitHub starsUsed in 2 repos~3.2k tokens
    Knowledge ManagementAuto-check passed
  • Obsidian CLI

    Atmosphere/atmosphere

    Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more.

    3.8k GitHub starsUsed in 13 repos~795 tokens
    Knowledge ManagementAuto-check passed
  • Esm Cjs Risk Scan

    logseq/logseq

    Scan Logseq ClojureScript Node/Electron targets for npm module loading risks, especially ESM-only packages that may fail when loaded through js/require or shadow-cljs require-based shims.

    45k GitHub stars~3.3k tokensUpdated today
    Knowledge ManagementAuto-check passed
  • Capture Conversation

    outline/outline

    Save the current conversation, a decision, or a set of notes as a document in an Outline collection; use when the user wants to keep what was discussed in their knowledge base.

    41k GitHub stars~474 tokensUpdated today
    Knowledge ManagementAuto-check passed
  • Karpathy LLM Wiki

    Astro-Han/karpathy-llm-wiki

    A skill your agent uses when building or maintaining a personal LLM-powered knowledge base.

    2.4k GitHub stars~3.6k tokensUpdated 2 mo ago
    Knowledge ManagementAuto-check passed

More from JetXu-LLM/DocMason

All 15 skills in this repo
  • Adapter Sync

    JetXu-LLM/DocMason

    Generate or refresh the local Claude adapter surface for DocMason from canonical committed sources.

    147 GitHub stars~684 tokensUpdated 9 days ago
    Auto-check passed
  • Grounded Answer

    JetXu-LLM/DocMason

    Answer a user question through DocMason's canonical grounded workflow using retrieval, provenance tracing, render escalation, and a final answer-state check.

    147 GitHub stars~3.1k tokensUpdated 9 days ago
    Auto-check passed
  • Grounded Composition

    JetXu-LLM/DocMason

    Produce evidence-backed research, planning, drafting, or composition output from the published DocMason knowledge base while preserving provenance and answer-file discipline.

    147 GitHub stars~2.7k tokensUpdated 9 days ago
    Auto-check passed
  • Knowledge Base Sync

    JetXu-LLM/DocMason

    Stage, incrementally refresh, validate, and publish the DocMason knowledge base from the local source corpus.

    147 GitHub stars~1.5k tokensUpdated 9 days ago
    Auto-check passed
  • Knowledge Construction

    JetXu-LLM/DocMason

    Write bilingual Phase 3 knowledge objects for staged DocMason sources from rendered evidence and extracted structure.

    147 GitHub stars~1.8k tokensUpdated 9 days ago
    Auto-check passed
  • Operator Eval

    JetXu-LLM/DocMason

    Run the hidden operator-only evaluation loop over local runtime/eval artifacts without exposing that surface in normal first-contact workflows.

    147 GitHub stars~433 tokensUpdated 9 days ago
    Auto-check passed

Questions about Ask

What does Ask do?

Accept an ordinary user question inside a DocMason workspace, route it to the right inner workflow, and preserve conversation-native logs automatically. Ask is an agent skill from JetXu-LLM/DocMason. Accept an ordinary user question inside a DocMason workspace, route it to the right inner workflow, and preserve conversation-native logs automatically.

When should I use Ask?

Ask fits situations like: knowledge Management work in your project.

How do I install Ask in Claude Code?

Run `npx skills add JetXu-LLM/DocMason --skill ask -a claude-code`. Or copy the skill folder (skills/canonical/ask in JetXu-LLM/DocMason) into .claude/skills/ask in your project. Claude Code loads it when a task matches its description.

How do I install Ask in Codex?

Run `npx skills add JetXu-LLM/DocMason --skill ask -a codex`. Or copy the skill folder (skills/canonical/ask in JetXu-LLM/DocMason) into .agents/skills/ask in your project. Codex loads it when a task matches its description.

Can I use Ask in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add JetXu-LLM/DocMason --skill ask -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ask, .gemini/skills/ask, .github/skills/ask and .opencode/skills/ask in your project.

What does Ask need to run?

Going by SKILL.md and its folder, Ask needs the command-line tools its instructions call (python). Our summary lists: Python 3.

Does Ask access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Ask safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Ask use?

Ask is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ask use?

About 7.1k tokens (SKILL.md is roughly 29k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ask?

Skills that share tags, products or a category with Ask: Logseq Review Workflow Eval (logseq/logseq, 45k stars), Baoyu URL To Markdown (sdyckjq-lab/llm-wiki-skill, 2.5k stars), Obsidian CLI (Atmosphere/atmosphere, 3.8k stars) and Esm Cjs Risk Scan (logseq/logseq, 45k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ask?

JetXu-LLM (a GitHub user) maintains it in JetXu-LLM/DocMason, which has 147 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on September 30, 2026.

Source: JetXu-LLM/DocMason on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.