<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://www.conduction.nl/academy/</id>
    <title>Conduction Academy</title>
    <updated>2026-05-22T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://www.conduction.nl/academy/"/>
    <subtitle>New blogs, guides, case studies, webinars, and tutorials from Conduction.</subtitle>
    <icon>https://www.conduction.nl/img/favicon.svg</icon>
    <rights>Conduction B.V. © 2026</rights>
    <entry>
        <title type="html"><![CDATA[Spec-driven development with OpenSpec — let the AI write the code, you write the context]]></title>
        <id>https://www.conduction.nl/academy/spec-driven-development/</id>
        <link href="https://www.conduction.nl/academy/spec-driven-development/"/>
        <updated>2026-05-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Spec-driven development inverts the usual order. You don't sketch the feature, write the code, then maybe document what you built. You write the specification first — in Markdown, with RFC 2119 keywords and GIVEN/WHEN/THEN scenarios — and an AI agent (Hydra) implements code that satisfies it. The human's job moves up a level: you develop context, not code.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="App development" term="App development"/>
        <category label="Spec-driven" term="Spec-driven"/>
        <category label="OpenSpec" term="OpenSpec"/>
        <category label="Hydra" term="Hydra"/>
        <category label="ADR" term="ADR"/>
        <category label="AI" term="AI"/>
        <category label="n8n" term="n8n"/>
        <category label="Windmill" term="Windmill"/>
        <category label="OpenBuilt" term="OpenBuilt"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build a Nextcloud app on the Conduction stack — Part 6: Integrate]]></title>
        <id>https://www.conduction.nl/academy/deskdesk-tutorial-6-integrate/</id>
        <link href="https://www.conduction.nl/academy/deskdesk-tutorial-6-integrate/"/>
        <updated>2026-05-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The sixth and final part of the DeskDesk tutorial. Part 4 packaged the app and put it on the Conduction store; this part makes it talk to the rest of the workspace — three integration patterns layered from least to most invasive. By the end your bookings know who their customer is, every booking shows the right help articles from xWiki, and a needs_repair booking automatically opens a maintenance page in xWiki that flips the booking back to available when the page is marked resolved.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="App development" term="App development"/>
        <category label="OpenConnector" term="OpenConnector"/>
        <category label="OpenRegister" term="OpenRegister"/>
        <category label="Integration" term="Integration"/>
        <category label="xWiki" term="xWiki"/>
        <category label="Webhook" term="Webhook"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build a Nextcloud app on the Conduction stack — Part 5: Advanced manifest features]]></title>
        <id>https://www.conduction.nl/academy/deskdesk-tutorial-5-advanced-manifest/</id>
        <link href="https://www.conduction.nl/academy/deskdesk-tutorial-5-advanced-manifest/"/>
        <updated>2026-05-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This is Part 5 of the DeskDesk tutorial. Parts 1–4 got you a working app: scaffold, schemas + manifest, schema-driven Calendar, and a custom Knowledge tab. Part 5 is the "now what" — the v2.7.0 manifest features Parts 1–4 deliberately skipped so the learning curve stayed gentle. You don't need any of them to ship DeskDesk, but the moment your app needs a public form, a wiki, an admin-only listing, or a markdown editor inside a form, they save you from another round of hand-rolled Vue.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="App development" term="App development"/>
        <category label="Manifest" term="Manifest"/>
        <category label="OpenRegister" term="OpenRegister"/>
        <category label="nextcloud-vue" term="nextcloud-vue"/>
        <category label="Tutorial series" term="Tutorial series"/>
        <category label="Advanced" term="Advanced"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[OpenWoo community — two years of monthly meetings]]></title>
        <id>https://www.conduction.nl/academy/openwoo-community-meetings/</id>
        <link href="https://www.conduction.nl/academy/openwoo-community-meetings/"/>
        <updated>2026-05-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The OpenWoo community meets every second Tuesday of the month. Vendors (Conduction, Xxllnc, OpenGemeenten, SHIFT2, Acato, Notubiz, iO), municipalities in production or acceptance, and KOOP share progress, blockers, and the next slice of the roadmap. Below are all recorded sessions since late 2023.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="OpenWoo" term="OpenWoo"/>
        <category label="Woo" term="Woo"/>
        <category label="Community" term="Community"/>
        <category label="Video" term="Video"/>
        <category label="Common Ground" term="Common Ground"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Nextcloud is not a suite, it is a platform]]></title>
        <id>https://www.conduction.nl/academy/the-platform-moment/</id>
        <link href="https://www.conduction.nl/academy/the-platform-moment/"/>
        <updated>2026-05-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nextcloud is standing in front of an open window. Most people, including many inside the ecosystem itself, have not yet noticed it is open. What started as a safe alternative for file storage has quietly grown into something fundamentally different. The technical reality is already that of a platform. The name is the only thing still trailing behind. And in technology, as history teaches us, naming is not cosmetic. Naming is load-bearing. Windows close.]]></summary>
        <author>
            <name>Ruben van der Linde</name>
            <uri>https://github.com/rubenvdlinde</uri>
        </author>
        <category label="Nextcloud" term="Nextcloud"/>
        <category label="Platform" term="Platform"/>
        <category label="Sovereignty" term="Sovereignty"/>
        <category label="AI" term="AI"/>
        <category label="OpenBuilt" term="OpenBuilt"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build a Nextcloud app on the Conduction stack — Part 4: Knowledge + ship]]></title>
        <id>https://www.conduction.nl/academy/deskdesk-tutorial-4-knowledge-and-ship/</id>
        <link href="https://www.conduction.nl/academy/deskdesk-tutorial-4-knowledge-and-ship/"/>
        <updated>2026-05-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Part 4 of the six-part DeskDesk tutorial. Part 3 made bookings appear in NC Calendar with one schema annotation. Part 4 brings external knowledge — zone-specific etiquette, equipment notes, troubleshooting — from xWiki into the desk detail sidebar via a knowledge_article OpenRegister schema. Then we package the app and ship it.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="App development" term="App development"/>
        <category label="OpenConnector" term="OpenConnector"/>
        <category label="xWiki" term="xWiki"/>
        <category label="Knowledge management" term="Knowledge management"/>
        <category label="Release" term="Release"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Claude Skills tutorial series — Part 1: What are Claude Skills?]]></title>
        <id>https://www.conduction.nl/academy/claude-skills-tutorial-1-wat-zijn-claude-skills/</id>
        <link href="https://www.conduction.nl/academy/claude-skills-tutorial-1-wat-zijn-claude-skills/"/>
        <updated>2026-05-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Claude Skills are the mechanism for extending Claude Code with reusable, specialised behaviours. Think of Conduction's own /review-pr, /opsx-new, or the whole hydra-gate- family: each one is a skill. This first part explains in ten minutes what a skill is, how it gets activated, and when you should not write one. It's part 1 of a four-part track; by the end you'll be ready to write your own in part 2 — and in part 3 we introduce the 7-level maturity framework* that takes a skill from "feels good" to "measured good" (part 4 continues with L6 and L7).]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="Claude" term="Claude"/>
        <category label="Claude Code" term="Claude Code"/>
        <category label="Skills" term="Skills"/>
        <category label="AI" term="AI"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Claude Skills tutorial series — Part 3: Skill evals — measuring whether your skill actually works]]></title>
        <id>https://www.conduction.nl/academy/claude-skills-tutorial-3-skill-evals/</id>
        <link href="https://www.conduction.nl/academy/claude-skills-tutorial-3-skill-evals/"/>
        <updated>2026-05-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[You now have a working skill — but does it actually work well? And does it keep working when Claude itself gets upgraded or when you tweak the skill? This third, optional part shows how to evaluate a skill systematically: test scenarios, trigger tests, a baseline measurement, and the eval runner that /skill-creator sets up for you. This is the step from Maturity Level 4 ("feels right") to Level 5 ("measurably right").]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="Claude" term="Claude"/>
        <category label="Claude Code" term="Claude Code"/>
        <category label="Skills" term="Skills"/>
        <category label="AI" term="AI"/>
        <category label="Evals" term="Evals"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build a Nextcloud app on the Conduction stack — Part 3: Schema-driven integrations]]></title>
        <id>https://www.conduction.nl/academy/deskdesk-tutorial-3-calendar/</id>
        <link href="https://www.conduction.nl/academy/deskdesk-tutorial-3-calendar/"/>
        <updated>2026-05-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This is Part 3 of the six-part DeskDesk tutorial. Part 2 wired the desk and booking schemas. Part 3 makes those bookings appear in every user's Nextcloud Calendar — without writing a controller, an event listener, or any per-app calendar glue.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="App development" term="App development"/>
        <category label="OpenRegister" term="OpenRegister"/>
        <category label="NC Calendar" term="NC Calendar"/>
        <category label="CalDAV" term="CalDAV"/>
        <category label="Schema integrations" term="Schema integrations"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Claude Skills tutorial series — Part 2: Writing your first skill]]></title>
        <id>https://www.conduction.nl/academy/claude-skills-tutorial-2-je-eerste-skill/</id>
        <link href="https://www.conduction.nl/academy/claude-skills-tutorial-2-je-eerste-skill/"/>
        <updated>2026-05-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In part 1 you saw what a skill is. In this part you'll write one yourself: a working git-status-summary skill that produces a readable summary of the current working tree. At the end it sits in your ~/.claude/skills/ folder, you can invoke it via /git-status-summary, and you'll know how to share it with your team.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="Claude" term="Claude"/>
        <category label="Claude Code" term="Claude Code"/>
        <category label="Skills" term="Skills"/>
        <category label="AI" term="AI"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Claude Skills tutorial series — Part 4: From measured to learning and orchestrating (L6 → L7)]]></title>
        <id>https://www.conduction.nl/academy/claude-skills-tutorial-4-l6-l7-mature-skills/</id>
        <link href="https://www.conduction.nl/academy/claude-skills-tutorial-4-l6-l7-mature-skills/"/>
        <updated>2026-05-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In part 3 you took a skill from "feels right" to "measurably right" — Maturity Level 5. For most skills that's enough. But for a handful of skills you use daily, or that steer other skills, you want to go further: a skill that learns from its own executions (L6), and a skill that steers other agents inside a larger workflow (L7). This fourth part shows how you get there — and how the Hydra dashboard lets you monitor your whole skill library for maturity at once.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="Claude" term="Claude"/>
        <category label="Claude Code" term="Claude Code"/>
        <category label="Skills" term="Skills"/>
        <category label="AI" term="AI"/>
        <category label="Maturity" term="Maturity"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build a Nextcloud app on the Conduction stack — Part 2: Schemas + manifest]]></title>
        <id>https://www.conduction.nl/academy/deskdesk-tutorial-2-schemas-manifest/</id>
        <link href="https://www.conduction.nl/academy/deskdesk-tutorial-2-schemas-manifest/"/>
        <updated>2026-05-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This is Part 2 of the six-part DeskDesk tutorial. Part 1 left you with an empty app shell — a chassis, no data. Part 2 fills the chassis: three schemas, a manifest, and the same five Cn* pages drive every list, every detail view, every dashboard with the schema as the single source of truth.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="App development" term="App development"/>
        <category label="OpenRegister" term="OpenRegister"/>
        <category label="Schemas" term="Schemas"/>
        <category label="Manifest" term="Manifest"/>
        <category label="nextcloud-vue" term="nextcloud-vue"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Hydra tutorial series — Part 2: The three pipelines]]></title>
        <id>https://www.conduction.nl/academy/hydra-tutorial-2-drie-pipelines/</id>
        <link href="https://www.conduction.nl/academy/hydra-tutorial-2-drie-pipelines/"/>
        <updated>2026-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In part 1 you saw that Hydra has four personas. In this part we look at the pipeline: how those personas work on one issue one after another, which labels mark the transitions, and when the pipeline diverts to needs-input. By the end you'll know Hydra's label state machine inside out and you'll be able to steer an issue back to the right phase if it gets stuck somewhere.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="Hydra" term="Hydra"/>
        <category label="Pipelines" term="Pipelines"/>
        <category label="Personas" term="Personas"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Hydra tutorial series — Part 3: Quality gates]]></title>
        <id>https://www.conduction.nl/academy/hydra-tutorial-3-quality-gates/</id>
        <link href="https://www.conduction.nl/academy/hydra-tutorial-3-quality-gates/"/>
        <updated>2026-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In part 2 you saw that the three personas are backed up by mechanical quality gates — checks that pass or fail deterministically, without AI in the loop. This part explains which gates we have, why they are mechanical, and how to handle the exception: the false positive.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="Hydra" term="Hydra"/>
        <category label="Gates" term="Gates"/>
        <category label="Quality" term="Quality"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Hydra tutorial series — Part 1: What is Hydra?]]></title>
        <id>https://www.conduction.nl/academy/hydra-tutorial-1-wat-is-hydra/</id>
        <link href="https://www.conduction.nl/academy/hydra-tutorial-1-wat-is-hydra/"/>
        <updated>2026-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Hydra runs on OpenSpec changes. If you're not yet familiar with terms like spec, change, requirement and scenario, take the OpenSpec tutorial series first (parts 1 and 2, roughly 30 minutes together). It will save you a lot of backtracking in the rest of these modules.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="Hydra" term="Hydra"/>
        <category label="AI" term="AI"/>
        <category label="CI/CD" term="CI/CD"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Hydra tutorial series — Part 4: Skills]]></title>
        <id>https://www.conduction.nl/academy/hydra-tutorial-4-skills/</id>
        <link href="https://www.conduction.nl/academy/hydra-tutorial-4-skills/"/>
        <updated>2026-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This part dives straight into the Hydra-specific skill families. If you'd rather first learn what a Claude Skill even is, how the frontmatter works, and when you'd write one yourself, take the public Claude Skills tutorial series (three short modules, ~40 minutes). From here on we assume you know the basics.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="Hydra" term="Hydra"/>
        <category label="Skills" term="Skills"/>
        <category label="OPSX" term="OPSX"/>
        <category label="Testing" term="Testing"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Hydra tutorial series — Part 5: Starting a Hydra run on a real app]]></title>
        <id>https://www.conduction.nl/academy/hydra-tutorial-5-een-hydra-run-starten/</id>
        <link href="https://www.conduction.nl/academy/hydra-tutorial-5-een-hydra-run-starten/"/>
        <updated>2026-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The first four parts were about concept, pipelines, gates and skills. Time to actually run. In this part you start a full Hydra run on a target app, paying attention to the practical pitfalls: tokens, images, and — if you work with multiple devs against the same repos — the HYDRALABELPREFIX trick.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="Hydra" term="Hydra"/>
        <category label="Operations" term="Operations"/>
        <category label="Setup" term="Setup"/>
        <category label="Labels" term="Labels"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Hydra tutorial series — Part 6: Troubleshooting & escalation]]></title>
        <id>https://www.conduction.nl/academy/hydra-tutorial-6-troubleshooting-escalatie/</id>
        <link href="https://www.conduction.nl/academy/hydra-tutorial-6-troubleshooting-escalatie/"/>
        <updated>2026-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In part 5 the pipeline was running. Now the final part: what do you do when it doesn't go green? This part gives you the decision tree — ordered from cheapest intervention to most expensive — and the patterns that get needs-input issues moving again.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="Hydra" term="Hydra"/>
        <category label="Troubleshooting" term="Troubleshooting"/>
        <category label="Recovery" term="Recovery"/>
        <category label="Tutorial series" term="Tutorial series"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[OpenSpec tutorial series — Part 1: What is OpenSpec?]]></title>
        <id>https://www.conduction.nl/academy/openspec-tutorial-1-wat-is-openspec/</id>
        <link href="https://www.conduction.nl/academy/openspec-tutorial-1-wat-is-openspec/"/>
        <updated>2026-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[OpenSpec is a lightweight framework for spec-driven development: first write down what a feature should do, only then write the code. In this twelve-minute module you'll learn what OpenSpec is, which concepts it builds on, and why we use it underneath almost every Conduction project. By the end you're ready for Part 2, where you'll actually write your first change.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="OpenSpec" term="OpenSpec"/>
        <category label="Spec-first" term="Spec-first"/>
        <category label="Tutorial series" term="Tutorial series"/>
        <category label="Documentation" term="Documentation"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[OpenSpec tutorial series — Part 2: Your first OpenSpec change]]></title>
        <id>https://www.conduction.nl/academy/openspec-tutorial-2-eerste-change/</id>
        <link href="https://www.conduction.nl/academy/openspec-tutorial-2-eerste-change/"/>
        <updated>2026-05-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Time to see OpenSpec in action. In this part you'll create your first real change inside a Conduction project — from empty folder, through a spec-delta with a requirement and scenario, to a validated proposal ready for implementation. We do that with the Claude Code skills /opsx-new and /opsx-ff.]]></summary>
        <author>
            <name>Conduction</name>
            <uri>https://conduction.nl</uri>
        </author>
        <category label="OpenSpec" term="OpenSpec"/>
        <category label="Spec-first" term="Spec-first"/>
        <category label="Tutorial series" term="Tutorial series"/>
        <category label="Workflow" term="Workflow"/>
        <category label="Claude Code" term="Claude Code"/>
    </entry>
</feed>