Agent skill

Workshop Docs Style

by quarkusio in quarkusio/quarkus-workshop-langchain4j

Writing style guide for the Quarkus LangChain4j workshop documentation.

Apache-2.0Auto-check passedWriting & Content

Install Workshop Docs Style

skills CLI
$ npx skills add quarkusio/quarkus-workshop-langchain4j --skill workshop-docs-style -a claude-code

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

GitHub CLI
$ gh skill install quarkusio/quarkus-workshop-langchain4j workshop-docs-style --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/quarkusio/quarkus-workshop-langchain4j.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/workshop-docs-style .claude/skills/workshop-docs-style && 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
workshop-docs-style
GitHub stars
110
Token cost
~8.1k tokens
SKILL.md length
4,716 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
Apache-2.0

At a glance

Writing style guide for the Quarkus LangChain4j workshop documentation.

  • Tasks that involve Brand voice and tone
  • SKILL.md covers Voice and Tone, AI Style Tells to Avoid, When Lists Are Fine and MkDocs Admonitions, plus 7 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Workshop Docs Style is an agent skill from quarkusio/quarkus-workshop-langchain4j. Writing style guide for the Quarkus LangChain4j workshop documentation. Apply whenever writing or editing docs in docs/docs/. This skill must be consulted before writing or editing any file under docs/docs/ — do not rely on defaults.

Its SKILL.md is about 8.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Writing & Content, covering Brand voice and tone. It works with Model Context Protocol. The repository describes itself as: Quarkus LangChain4J Workshop that demonstrates both single AI service capabilities and Agentic AI orchestration. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Brand voice and tone

Example prompts

  • “/workshop-docs-style”

What it can do on your machine

Read from SKILL.md and the folder at commit a4e5d67. 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

    No scripts in the folder and no shell commands in SKILL.md.

    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

Workshop Docs Style loads about 8.1k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 4,716 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~63
When it runs · the whole SKILL.md, loaded when a task matches
~8.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 quarkusio/quarkus-workshop-langchain4j at commit a4e5d67, republished under its Apache-2.0 licence (© quarkusio). 4,716 words, ~8,091 tokens.

Download SKILL.mdSave it as .claude/skills/workshop-docs-style/SKILL.md (or your agent's skills folder).
name
workshop-docs-style
description
Writing style guide for the Quarkus LangChain4j workshop documentation. Apply whenever writing or editing docs in docs/docs/. This skill must be consulted before writing or editing any file under docs/docs/ — do not rely on defaults.

Workshop Documentation Style Guide

This guide captures the conventions established for the Quarkus LangChain4j workshop docs. It is self-contained for contributors to this repository; repeat a general writing rule here when workshop authors need it. The reference voice is Section 1, which was written by the project owner without AI assistance.

Voice and Tone

Write as a technical instructor talking to a developer sitting in front of their laptop. Be direct and practical. Avoid corporate enthusiasm ("Congratulations!", "Great!", "Easy right?") unless a brief one-liner fits naturally at the end of a section. Don't start pages with "In this step you will learn..." laundry lists.

Stay in the reader's exercise

Keep learner-facing prose about the business scenario, system behavior, and actions the reader can take. Do not insert workshop-author commentary about how chapters are being built, what is planned or omitted, or which features have not been implemented. For example, delete asides such as "The section will build toward checking offers with external services, but the current planner has no extras catalog or reservation service." Keep roadmap and implementation-status details in planning documents. An unfinished chapter can retain one short "Coming soon" notice without repeating that status throughout its prose.

Do not narrate our local testing history or conversations with the project owner. Dates, model-specific outcomes, run identifiers, incidental screenshot details, and accounts of what worked during author testing belong in maintenance notes, not the tutorial. Explain what the reader should inspect and why. Preserve setup instructions and limitations that affect the exercise, such as a simulated booking, state lost on restart, or a price covering vehicle rental only. Put these beside the relevant action instead of adding general disclaimers to the scenario.

Connected prose

Concise does not mean a succession of short, abrupt sentences. Develop each paragraph around a connected idea, using cause, contrast, or sequence to help one sentence lead into the next. Vary sentence length naturally, without turning every explanation into either clipped statements or one long sentence.

  • Avoid: The application restarts. The plan is lost. The customer starts again. We need persistence.
  • Prefer: If the application restarts while the customer is reading their itinerary, the plan disappears and they have to generate it again. Saving the pending trip allows them to return to the same plan and continue with approval.

Avoid joining explanatory clauses with a semicolon. Express the relationship naturally with wording such as even with, although, or because, or reshape the surrounding sentences. Do not simply replace every semicolon with a period, which can leave the same abrupt rhythm. This applies to prose, not syntax in code or quoted output.

  • Avoid: The skills added in Step 01 guide the agents' choices; they cannot ensure that every response follows those instructions.
  • Prefer: Even with the skills we added in Step 01, the agents can still overlook our instructions when generating a response. The application therefore needs checks of its own before passing recommendations to the rest of the planning pipeline.

Read the prose aloud before finishing. If it sounds like a list with the bullets removed, reconnect the ideas rather than just adding transition words. Short action directives are fine, while explanatory paragraphs should have a more conversational rhythm.

When connecting lessons, explain why the previous capability leaves a problem for this chapter to solve. Repeating that the agents now have data does not explain why they might misuse it.

  • Avoid: In Step 06, we gave the planner weather forecasts through MCP. The agents now have that information available, but they can still overlook something the customer asked for.
  • Prefer: In Step 06, we connected the planner to weather tools through MCP so it could use their forecasts when recommending a trip. Even with those details, the model still has to choose activities that fit the customer's request.

AI Style Tells to Avoid

These patterns are strong signals that text was generated by an AI. Actively avoid them:

The em-dash clarification pattern. Do not write X — it does Y or X — Y, Z, and W. Instead, write it as a full sentence or clause.

  • Bad: The @Output method assembles the final TripPlan from scope values — pure Java, no extra LLM call.
  • Good: The @Output method assembles the final TripPlan from scope values using pure Java without an extra LLM call.
  • Also bad: The left panel is the trip form — destination, duration, number of travelers.
  • Good: The left panel is the trip form with fields for destination, duration, and number of travelers.

Generic recaps after code. Avoid "Key Points" or "Key Takeaways" lists that repeat the snippet or make broad claims about its benefits. Use "What to notice" selectively for complex changes, as described under Code Block Explanations.

The feature-benefit bullet list. Avoid lists of the form:

- **Hot-reload friendly**: Quarkus dev mode picks up changes automatically
- **Separation of concerns**: Domain experts can author skill content in Markdown

Write the same content as a paragraph instead.

Bold label: explanation inline. Avoid **Feature**: description patterns in running text. Use prose.

Colon-separated label/description lists in prose. Do not write The left panel renders: vehicle recommendation, route overview, daily itinerary. Write it as a sentence: The left panel renders the vehicle recommendation, route overview, and daily itinerary.

The sentence-then-colon explanation pattern. Avoid setups like For this step, the flow is simple: or The workflow does one thing: followed by an explanation. This sounds synthetic even when the content is correct. Write it as normal prose instead.

  • Bad: For this step, the flow is simple: start from an event, wait for approval, then continue.
  • Better: The flow starts from an event, waits for approval, and then continues.

Vague framing around behavior. Avoid empty scaffolding phrases such as it does one simple thing, the flow is simple, or you start from. Name the behavior directly.

  • Bad: The workflow does one simple thing.
  • Better: The workflow takes a booking event, generates a trip plan, and waits for approval.

Mechanical walkthrough voice for explanations. Describe system behavior with the system as the subject, rather than pretending the reader performs its internal operations. Direct address is still welcome when connecting lessons or guiding the exercise: You've seen how system and user prompts work, We're going to add four skills, or In the tests we just did.... These transitions should refer to actual prior work and explain why the next activity follows. Reserve ==highlighted text== for actions to perform now, not every use of you or we.

  • Bad: You start from an event with schedule and then wait with listen.
  • Better: The workflow starts from an event with schedule and then waits with listen.

"That" as a sentence opener. AI models frequently start follow-up sentences with "That works...", "That means...", "That way...". Use "This" instead, which sounds more natural in written English.

  • Bad: The request comes in and the agents run. That works for immediate answers.
  • Better: The request comes in and the agents run. This works for immediate answers.

Explain behavior first, API names second. When introducing workflow steps, standards, or architecture, start with what happens in plain language. Then tie it back to the concrete API names or annotations.

  • Better: The workflow waits for the approval response before continuing. In the code, that pause is handled by listen().

Keep exact filenames, method names, and variables where the reader needs them to locate or edit code. In the surrounding explanation, describe the behavior without repeating every identifier. Explain why the change is needed instead of translating the code into prose.

Introduce details where the reader will use them. Explain the purpose of a skill before its directory layout, then define YAML frontmatter briefly when asking the reader to create the file. Familiarity with earlier workshop concepts does not imply familiarity with every supporting format. Put reference links beside the relevant explanation; the reader should not need to leave the tutorial to understand a required edit.

  • Avoid: handleApprovalRequested() writes planJson and sets status to awaiting_approval. handleBookingFinalized() updates confirmationJson.
  • Prefer: When the plan is ready for approval, the store saves it together with the original request. Once booking finishes, it adds the confirmation to the same record, so the browser can retrieve the outcome after a restart.

Preemptive reassurance. Do not add sentences that address a concern the reader hasn't raised, such as "The tests do not call a live model", "No external services are required", or "This will not affect your existing configuration." If something genuinely requires a prerequisite or has a limitation, state it as a concrete instruction beside the relevant action. A floating reassurance in isolation adds noise without helping anyone complete the exercise.

Parallel bullet structure that sounds like a spec. Instead of:

- `CostEstimatorAgent` reads vehicle and itineraryResult from scope
- outputKey = "costs"
- No skills needed

Explain the behavior introduced by a method or annotation in connected prose. Use short, complete bullets when several independent points are easier to scan as a list.

Metaphor as shorthand for a concrete explanation. Avoid vague figurative phrases like "different lenses", "wearing different hats", or "from different angles" when describing what agents or components do. These are unclear to non-native speakers and substitute a metaphor for the actual explanation. Name what the agent or component specifically does instead.

  • Bad: Each evaluator approaches the vehicle from a different angle.
  • Good: Each evaluator is given a single concern — comfort, cost, or fuel efficiency — and scores the vehicle against that concern only.

When Lists Are Fine

Bullet lists are appropriate for:

  • Form field values the reader is instructed to type (destination, duration, etc.)
  • Prerequisite lists
  • Troubleshooting steps where each item is a discrete check
  • Sequential commands where order matters
  • Focused "What to notice" lists for complex changes with several independent ideas

MkDocs Admonitions

!!!tip, !!!note, !!!warning, and ???warning (collapsible) are all fine and encouraged where they add value. Use !!!tip for helpful shortcuts or alternative approaches. Use !!!note for important context that isn't a warning. Use ???warning (collapsible) for troubleshooting blocks so they don't clutter the page. Do not invent a reason to add an admonition on every page — use them only when the content genuinely benefits from the callout treatment.

Use ??? info "Why not ...?" for optional design discussions, alternative approaches, or deeper implementation details. These boxes must be closed by default, so use ???, not ???+. Indent all of the explanation inside the box.

A short recap of the supplied starter can use a visible !!! info box with a small diagram. This separates existing behavior from the new work without hiding useful orientation. Use a collapsed box when the recap becomes a deeper implementation discussion.

Keep required edits and safety-critical instructions visible. If an implementation limitation affects the exercise, state the practical instruction in the main text and put the deeper explanation in a collapsed box. Readers should be able to complete the chapter without opening optional background sections.

Action Directives

Use ==highlighted text== whenever the reader is supposed to do something right now: open a file, type a value, run a command, click a button. This is a MkDocs highlight and renders as a yellow marker.

Examples:

  • ==Open application.properties and add the following:==
  • ==Navigate to section-3/step-01 and start the application:==
  • ==Click **Generate Trip Plan**.==

Do not use action directives for passive observations ("Notice how...").

Optional practice suggestions can stay in ordinary prose when clearly introduced as optional. If an optional exercise includes a worked sequence, mark its immediate actions just like the main exercise.

Code Block Explanations

Explain why a file or change is needed before the highlighted action directive and code. Afterward, default to a short, connected paragraph about the new behavior. Related snippets, such as adding the same annotation to two agents, can share one explanation after both blocks.

After a code block, if the change has several independent ideas worth calling out, use a short bullet list. Do not add a "What to notice" heading above it — just start the bullets directly. Reserve the list for genuinely independent points that are easier to scan than to connect in prose. Small annotation changes, simple helpers, and most test excerpts need only a paragraph, not a list at all.

When walking through several distinct annotations or methods in a class — for example explaining @LoopAgent, maxIterations, @ExitCondition, and an output key each doing different things — use bullets, one per item. Do not collapse these into a dense paragraph. A paragraph is appropriate when the points are causally connected; bullets are appropriate when each item stands alone.

When using the list, tie each short bullet to a relevant method, annotation, or assertion. Focus on behavior the reader could miss. Do not list every field and method just to fill the pattern, and do not repeat what the preceding prose already said.

For example, a guardrail whose validate() runs independent checks in order reads better as a lead sentence and one bullet per check, followed by a short paragraph for the shared consequence:

`validate()` runs three checks in order and returns as soon as one fails:

- The response must parse as JSON. `extractJson()` strips any Markdown fences the model wraps around it.
- The `itinerary` array must contain at least one day.
- The route overview and day descriptions must not contain any phrase from `DANGEROUS_KEYWORDS`.

A failed check returns `retry()`, which asks the model for a new response.

By contrast, adding @OutputGuardrails to two agents needs one paragraph, not a list.

Add a compact input or output example when it clarifies the behavior, and label illustrative output clearly. Preserve limitations that affect the exercise beside the relevant code. Avoid repeating the explanation in a closing summary or adding a transition that merely announces the next heading.

Review the page as a whole for rhythm and repetition. Alternate prose and lists according to the material, without turning short bullets into a dense paragraph or imposing a fixed number of lists per chapter.

Updating existing code

For files that already exist in the previous step, tell the reader to update the highlighted lines rather than replace the entire file. Use MkDocs hl_lines to distinguish additions and changes from unchanged context, and explicitly identify fields or imports that must be removed, since they will not appear in the resulting snippet.

Split long classes into focused excerpts at useful editing boundaries, keeping every required change visible. A collapsed "Complete updated file" box can provide the full class for comparison. New, short files can be shown in full without breaking them into excerpts.

Prefer the repository's source includes (--8<--) so snippets match the completed step. For excerpts, use the supported path:start:end syntax and check that hl_lines counts from the beginning of the excerpt, not the original file. Recheck ranges and highlights whenever the source changes, and make it clear when an excerpt shows only a method declaration whose body should stay unchanged.

When a chapter adds several settings to the same properties file, give the reader one clear edit at the point where the settings are needed. If later text refers to a setting already shown, explain its purpose there without instructing the reader to add it again. Check that each properties snippet renders the intended lines in MkDocs.

Section Structure

Opening the chapter

Every chapter should open as a continuation of the previous step, including the first chapter of a new section. Connect what the reader just built or learned to the next concrete problem in the customer journey, then explain what this chapter will change and what the reader will learn through making that change. Preview an observable result they will verify at the end, such as approving the same trip after an application restart.

Make the connection to the previous step once, then explain the new capability on its own terms. Repeated "in Step 04" comparisons make readers reconstruct the earlier lesson instead of understanding the current one. When revising a later section at the author's request, preserve the opening unless the request includes it or a specific inconsistency requires a change.

At the start of a new section or application scenario, make that connection before introducing the new application. Explain how the previous step's outcome or patterns lead into the next customer need, without inventing a code dependency between separate applications. A prerequisite reminder alone is not that connection. Then introduce what the customer needs and what the application returns. An early screenshot gives readers a concrete view of what they will run. Explain what the starter already does, what it lacks, and what this chapter adds before discussing its internal orchestration.

Give these ideas a clear progression in flowing paragraphs rather than separate "What / Why / Learning objectives" inventories. Headings such as "A new scenario" and "What are we building?" are useful when they answer distinct reader questions. Introduce product names when useful, but leave class names and configuration properties for the implementation. A defining mechanism, such as activate_skill, can appear earlier if it makes the new concept concrete; do not turn the opening into an API inventory.

When a chapter introduces an unfamiliar practice such as evaluation, explain what the practice is and why the reader needs it before using the trip scenario to illustrate it. Then introduce the service or extension that supports the practice. Do not begin with the sample file, a check written in Java, or a workflow class and expect the reader to infer the larger purpose.

  • Avoid: The itinerary must have three days, which Java can check exactly. as the first explanation of evaluation.
  • Prefer: Evaluation checks a generated plan against a saved request and its requirements, so we can compare results after changing the planner. Then show how the three-day Rome request makes that idea concrete.

When introducing two mechanisms that look similar, explain who decides when each runs and what result it changes. For @McpToolBox and @McpClientAgent, explain model-selected tool use versus a workflow-invoked agent before naming the workshop class that uses either mechanism. For a runtime judge and a Langfuse evaluation judge, explain that one can request a retry during planning while the other scores a finished plan.

Show full SKILL.md (1,821 more words)Show less
Choosing a starting point

When starter and completed projects are available, provide clearly labeled MkDocs tabs for building hands-on or reviewing the completed solution. Explain that the solution is also a comparison point if a participant gets stuck. Identify the working directory for each route and where the routes rejoin for running and testing, so reviewers do not repeat edits already present in their project. Keep prerequisites such as API keys visible for both routes and use platform tabs where commands differ.

Introducing a pattern

When a heading introduces an architectural or agentic pattern — voting, loops, adaptive model selection, or similar — the opening prose must do two things. First, explain what the pattern does mechanically. Then follow with a separate sentence or short paragraph explaining why you would reach for it in a real production system: what problem it solves that simpler approaches cannot, or what property it gives the system that matters at scale.

This second part must stay at the level of the pattern itself, not the workshop scenario. It should be true regardless of whether the system is recommending cars, reviewing documents, or pricing insurance claims. If you find yourself writing about vehicles, trip types, or budget tiers in the "why it matters" sentence, you have drifted back into the scenario. Rewrite it in general terms.

  • Bad: Using three evaluators means a vehicle that scores 9 on comfort but 4 on cost still gets caught.
  • Good: Distributing evaluation across narrowly-scoped agents means no single concern can be silently traded away against another during aggregation.

Also avoid explaining the pattern's value by restating how it works. The "why" should add something the mechanical description does not already cover.

  • Bad: The loop keeps running until the score reaches the threshold, which ensures the output meets the standard.
  • Good: A numeric score and an explicit exit condition make quality verifiable — you can write a test that asserts the system meets a defined standard rather than relying on manual review.
Organizing the exercise

Avoid artificial numbering within a page ("Step 1", "Part 2"). Use descriptive headings. The MkDocs table of contents provides navigation structure already.

Use imperative verb forms for headings that describe an action the reader takes: "Create the evaluator agents", "Configure adaptive model selection", "Update the main workflow". Reserve noun or gerund forms for conceptual or navigational sections that describe a topic rather than a task: "Parallel assessment with the Voting pattern", "Troubleshooting", "What's next?".

Prefer headings that describe what the work accomplishes, such as "Saving workflow progress" or "Showing the restored trip", over a series of generic "Dependencies", "Configuration", and "Implementation" sections. Keep setup details near the work they enable, and avoid repeating the same overview in requirements, objectives, and architecture sections.

The table of contents should identify the concepts this chapter teaches and the tasks that apply them. Put contextual comparisons with earlier steps in prose or an !!! note, and place instructions for copying supplied code under the concept that code demonstrates. Keep useful navigation such as "Prepare the working copy".

Group the opening by questions a participant would ask, such as what evaluation is for, when a judge is useful, and what a scripted test proves. Do not turn every supporting noun into its own heading. Samples, datasets, rubrics, scores, and traces can be explained within broader sections that show how the reader will use them.

  • Avoid: a sequence of short opening sections titled "Samples", "Datasets", "Rubrics", "Experiments", and "Traces" before the reader knows why the evaluation exists.

  • Prefer: "Evaluating with Langfuse", "Judge models", "Testing with scripted responses", and "Understanding scores and traces", with supporting terms introduced where they help explain each activity.

  • Avoid: "How evaluation differs from the guardrails in Step 02" as a main heading.

  • Prefer: "Evaluating with Langfuse", with the guardrail comparison in the judge-model explanation.

  • Avoid: "Add the supplied evaluation tests" followed by a subsection called "The invariant checks".

  • Prefer: "Checking plan structure", with the copying instructions and check explanations in the same section.

  • Avoid: "What the new POM brings in".

  • Prefer: "Add the evaluation and tracing dependencies", or explain the dependencies beside the POM-copy instruction. State what each dependency does, such as loading samples or recording planning runs.

After renaming headings, check their hierarchy and update links to their anchors. Merge subsections that repeat the parent topic. Give a substantial concept its own heading when it answers a different reader question; explain smaller supporting terms in the relevant section.

Use Section 1 for explanation pacing and the concrete business scenarios in Section 2 for motivation. Do not copy earlier chapters' identifier-heavy objective lists or generic recap blocks just because they already exist. Use the focused file-change explanations described above. Section 3 step 01 is a reference for introducing a new scenario, offering participation routes, and teaching execution inspection. Step 04 is a reference for focused edits and optional background. Neither is a fixed template for every chapter.

Keep the required path focused on implementing and verifying the chapter's new concept. Remove unrelated UI tours or refinement exercises. Once the core behavior has been checked, a short "Taking it further" section can invite readers to apply the pattern themselves, such as adding another skill or changing access restrictions. Give a concrete experiment and something to inspect without supplying another complete copy-paste solution. Keep optional changes out of the baseline assumed by the next chapter.

Do not add a "Cleanup" section merely to tell readers to press Ctrl+C. Explain cleanup when it has consequences they need to understand, such as deleting the reused database and its saved trips.

Diagrams and screenshots

When planning or revising a chapter, look for places where a Mermaid diagram or screenshot would make the explanation easier to understand. Use diagrams for relationships and sequences, and screenshots for what the reader should recognize in the running application. Include both when they answer different questions, without treating visuals as decoration or requiring a fixed number per chapter.

Add a diagram when it answers a question that is harder to explain in prose, such as which component owns each kind of state or what survives an application restart. Place it beside that concept and trim the surrounding explanation so the reader does not work through the same account twice.

Use plain-language labels before introducing code identifiers. Keep diagrams small enough to read on mobile, and distinguish relationships in a flowchart from the order of events in a sequence diagram. Two diagrams should answer different questions; there is no need to add one to every chapter.

Validate Mermaid diagrams with a Mermaid renderer, not just a documentation build. MkDocs can build successfully while leaving invalid Mermaid for the browser to reject. When available, run mmdc -i <chapter.md> -o <temporary-output.md> to render the chapter's diagrams outside the source tree. Avoid literal semicolons in sequence-diagram messages or notes because Mermaid treats them as statement separators; use a line break or reword the label. Distinguish syntax/rendering checks from checking the actual page layout in a browser.

Screenshots are useful for introducing the application, unfamiliar Dev UI navigation, an important application state, or a result that confirms the exercise worked. Place each capture beside the relevant instruction or observation, crop it to the useful area, and provide descriptive alt text. Refer back to an early application screenshot instead of repeating it when the reader starts testing. Keep essential instructions in prose so readers do not have to extract them from an image.

For unfamiliar inspection tools, give the actual navigation path: a clickable URL, the named card or menu, the action to select, and the run or detail to expand. Pair navigation and result screenshots with their respective instructions. A supported keyboard shortcut can help, but should not replace the visible navigation route.

Capture the actual application and check existing screenshots against the current behavior before reusing them. Do not fabricate screens, logs, or successful outcomes. Remove secrets and personal information, store captures with the workshop's existing image assets, and ensure important text remains readable on a small screen. If a capture cannot be obtained or verified, report that gap rather than presenting an assumed result as evidence.

Teaching verification

After readers try the feature, connect the inspection exercise to a question the visible result cannot answer. A plausible itinerary does not prove a skill was activated. Explain this at the transition into inspection instead of repeating the same caveat after every test case. Keep warnings that affect an edit beside that edit.

For a feature the customer can use, let participants observe it in their application before sending them to a Dev UI or tracing tool to inspect how it works. For a testing lesson, move from known fixtures to controlled workflow responses to a live model run, and say what each check can establish before adding the next one. Keep test infrastructure in the lesson that teaches testing rather than carrying its setup through unrelated chapters.

Teach readers to recognize evidence, not merely to open a log. In the skills example, startup discovery confirms files were found; an outgoing tool definition confirms availability; a response's tool_calls entry shows the model requested activation; and the subsequent tool message shows the returned content. Show short, relevant excerpts and identify which request or response contains each one. Do not imply that activation alone proves the model followed every instruction in the skill.

Use short log excerpts only when they help the reader recognize a specific interaction. Explain what a tool call, error, or returned result means without recounting the author's run. Distinguish illustrative excerpts and fixed-response test output from guarantees about live-model behavior. For recoverable errors, explain how to check for a later successful result without promising recovery. Do not turn generated recommendations or timings from local testing into expected outcomes for the reader.

Final review

Read the chapter once as an explanation and once as an exercise. The first pass should make sense without decoding every identifier; the second should supply all edits needed to continue from the previous step. Check source includes and highlighted lines, build with pipenv run mkdocs build --clean from docs/, and separately render any changed Mermaid diagrams. Verify screenshot paths, relevance, and readability, and check that the visuals explain something the prose alone makes difficult. Report validation gaps instead of assuming a successful build proves the page renders correctly.

Check each participation route separately, including its prerequisites and the point where it joins the shared exercise. Confirm that verification shows evidence of the behavior being taught, and that skipping optional practice leaves the reader ready for the next chapter.

Closing the chapter

End pages with one or two sentences about what the reader can now do and, when there is another lesson, a plain sentence introducing it. No bullet recap or exclamation marks. At the end of a section, omit "What's next?" when there is no next lesson. A short closing paragraph can link to the conclusion without its own heading.

Example:

The customer can now return to a pending trip after an application restart, but the
decision is still limited to approving or rejecting the plan. In Step 05, we'll explore
how evaluator agents can review a plan and request another pass when it needs
improvement, using voting and refinement loops.

© quarkusio, 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

Just SKILL.md in .agents/skills/workshop-docs-style of quarkusio/quarkus-workshop-langchain4j.

Open the folder on GitHubat commit a4e5d67

Compare with similar skills

Workshop Docs Style 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.

Workshop Docs Style compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Workshop Docs Style this skillquarkusio/quarkus-workshop-langchain4j110—~8.1kAutomated safety check: PassApache-2.0
Good Docs AuditComposioHQ/composio30k—~293Automated safety check: PassMIT
Good Docs WritingComposioHQ/composio30k—~355Automated safety check: PassMIT
Publish Blogindranilbanerjee/digital-marketing-pro8551 repos~2.8kAutomated safety check: PassMIT
Translate Contentindranilbanerjee/digital-marketing-pro8551 repos~2.8kAutomated safety check: PassMIT
Search Knowledgeindranilbanerjee/digital-marketing-pro8551 repos~2.2kAutomated safety check: PassMIT

Similar skills

  • Good Docs Audit

    ComposioHQ/composio

    Audit a doc, guide, README, or block of prose against the good-docs-writing style guide and report violations.

    30k GitHub stars~293 tokensUpdated today
    Writing & ContentAuto-check passed
  • Good Docs Writing

    ComposioHQ/composio

    Writing style guide derived from Modal's documentation voice.

    30k GitHub stars~355 tokensUpdated today
    Writing & ContentAuto-check passed
  • Publish Blog

    indranilbanerjee/digital-marketing-pro

    Publish a blog post to WordPress or Webflow through the connected CMS MCP with SEO metadata, categories and tags, featured image, slug optimization, and optional scheduling.

    855 GitHub starsUsed in 1 repo~2.8k tokens
    Writing & ContentAuto-check passed
  • Translate Content

    indranilbanerjee/digital-marketing-pro

    Translate marketing content with automatic service routing per language pair, quality scoring across five dimensions (length ratio, formatting, key terms, placeholders, completeness), and a…

    855 GitHub starsUsed in 1 repo~2.8k tokens
    Writing & ContentAuto-check passed
  • Search Knowledge

    indranilbanerjee/digital-marketing-pro

    Search everything the brand has stored in memory — semantic, exact, or hybrid queries across a connected vector-DB MCP, an optional knowledge-graph server, and the always-available local index —…

    855 GitHub starsUsed in 1 repo~2.2k tokens
    Knowledge ManagementAuto-check passed
  • Cloud API Recipe Authoring

    TencentCloudBase/CloudBase-AI-Toolkit

    Author or revise a cloud-api-operations recipe (config/source/skills/cloud-api-operations/references/recipes/).

    1.1k GitHub stars~3.7k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from quarkusio/quarkus-workshop-langchain4j

  • Business Trip

    quarkusio/quarkus-workshop-langchain4j

    Itinerary planning guidance for business road trips — efficient routing, city access restrictions, meeting-paced scheduling, and productivity stops.

    110 GitHub stars~429 tokensUpdated yesterday
    Auto-check passed
  • Family Trip

    quarkusio/quarkus-workshop-langchain4j

    Itinerary planning guidance for family road trips — stop frequency, kid-friendly pacing, accommodation, and toll considerations.

    110 GitHub stars~530 tokensUpdated yesterday
    Auto-check passed
  • Adventure Trip

    quarkusio/quarkus-workshop-langchain4j

    Itinerary planning guidance for adventurous road trips — legendary driving roads, outdoor activity integration, seasonal access, and remote-area practicalities.

    110 GitHub stars~413 tokensUpdated yesterday
    Auto-check passed
  • Vehicle Selection

    quarkusio/quarkus-workshop-langchain4j

    Guidance for selecting the right rental vehicle category based on trip type, passenger count, terrain, and budget.

    110 GitHub stars~354 tokensUpdated yesterday
    Auto-check passed

Questions about Workshop Docs Style

What does Workshop Docs Style do?

Writing style guide for the Quarkus LangChain4j workshop documentation. Workshop Docs Style is an agent skill from quarkusio/quarkus-workshop-langchain4j. Writing style guide for the Quarkus LangChain4j workshop documentation.

When should I use Workshop Docs Style?

Workshop Docs Style fits situations like: tasks that involve Brand voice and tone.

How do I install Workshop Docs Style in Claude Code?

Run `npx skills add quarkusio/quarkus-workshop-langchain4j --skill workshop-docs-style -a claude-code`. Or copy the skill folder (.agents/skills/workshop-docs-style in quarkusio/quarkus-workshop-langchain4j) into .claude/skills/workshop-docs-style in your project. Claude Code loads it when a task matches its description.

How do I install Workshop Docs Style in Codex?

Run `npx skills add quarkusio/quarkus-workshop-langchain4j --skill workshop-docs-style -a codex`. Or copy the skill folder (.agents/skills/workshop-docs-style in quarkusio/quarkus-workshop-langchain4j) into .agents/skills/workshop-docs-style in your project. Codex loads it when a task matches its description.

Can I use Workshop Docs Style 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 quarkusio/quarkus-workshop-langchain4j --skill workshop-docs-style -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/workshop-docs-style, .gemini/skills/workshop-docs-style, .github/skills/workshop-docs-style and .opencode/skills/workshop-docs-style in your project.

What does Workshop Docs Style need to run?

SKILL.md names no scripts, command-line tools or credentials: Workshop Docs Style is instructions for the agent only.

Does Workshop Docs Style 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 Workshop Docs Style 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 Workshop Docs Style use?

Workshop Docs Style 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 Workshop Docs Style use?

About 8.1k tokens (SKILL.md is roughly 32k 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 Workshop Docs Style?

Skills that share tags, products or a category with Workshop Docs Style: Good Docs Audit (ComposioHQ/composio, 30k stars), Good Docs Writing (ComposioHQ/composio, 30k stars), Publish Blog (indranilbanerjee/digital-marketing-pro, 855 stars) and Translate Content (indranilbanerjee/digital-marketing-pro, 855 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Workshop Docs Style?

quarkusio (a GitHub organization) maintains it in quarkusio/quarkus-workshop-langchain4j, which has 110 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 6, 2026.

Source: quarkusio/quarkus-workshop-langchain4j on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.