Modularity of skills
In creating a skill to accomplish a task, it’s tempting to load up the skill with the full lists of subtasks directly in the skill. However, this is a mistake, as this results in megaskills that do 10 things. Megaskills don’t work for other writers because, due to the idiosyncratic nature of tech writing, these other writers don’t have the same set of tasks. Instead, if the tasks might be reused in other skills, you should make each task its own standalone skill. Then reference those tasks as part of the skill.
For example, let’s say that a release notes task for ACME API consists of the following tasks:
- Analyze source code release stage tags
- Run build script to regenerate reference docs
- Analyze build errors
- Compare Gerrit diffs
- Summarize the technical changes
- Connect the technical changes to roadmap features
- Identify breaking changes
- Summarize bug fixes
- Summarize doc fixes
- Check technical accuracy
- Update API diagrams
- Link code elements to reference docs
- Perform style check
- Look for errors in links, syntax, and configuration
- Reflect and improve the skill
This is the list of steps I go through for a release notes skill for one of my products. However, I write release notes for multiple products. Some other release notes have different processes. One product doesn’t have a roadmap, for example. Another product doesn’t have any Gerrit diffs to compare to. And so on. However, many of the other steps are similar.
If this were a documentation project, the approach any technical writer would take would be straightforward: modularize each of these components so they can be re-used. We follow a similar pattern when designing skills.
This means many of the above skills should be packaged as a standalone skill, to be used as needed for any other skill. The release notes skill for ACME API thus becomes more of a routing skill, with instructions such as the following:
- Run this skill: Analyze source code release stage tags
- Run build script to regenerate reference docs
- Run this skill: Analyze build errors
- Run this skill: Compare Gerrit diffs
- Run this skill: Summarize the technical changes
- Connect the technical changes to roadmap features
- Run this skill: Identify breaking changes
- Run this skill: Summarize bug fixes
- Run this skill: Summarize doc fixes
- Run this skill: Check technical accuracy
- Run this skill: Update API diagrams
- Run this skill: Link code elements to reference docs
- Run this skill: Perform style check
- Run this skill: Look for errors in links, syntax, and configuration
- Run this skill: Reflect and improve the skill
Now we end up with a dozen or so standalone skills that can be repurposed into other skills. The release notes skill ends up being more like a routing skill, or an overarching meta. It still might provide its own instruction in places, for areas or tasks that don’t make sense to break out into their own skills. For example, “Run build script to regenerate reference docs” - this is likely a particular configuration and directory unique to these docs. But most of the other skills can be reused.
By breaking skills down to a single task, this not only unlocks re-use for the author making the skills; it also unlocks re-use for other writers. Whereas the megaskill would have caused many writers to say sorry, this skill doesn’t work for me because of these small points, now the same writers can pick and choose the skills that work for them. Most likely 50-70% of these skills might apply to another writer’s release notes situation, as different as the release notes process might be.
In a modular skill design, skill building becomes an act of recipe creation. You have a cupboard full of ingredients, and as the recipe maker, you pick and choose the combination, order, and sequence of ingredients to use.
About Tom Johnson
I'm an API technical writer based in the Seattle area. On this blog, I write about topics related to technical writing and communication — such as software documentation, API documentation, AI, information architecture, content strategy, writing processes, plain language, tech comm careers, and more. Check out my API documentation course if you're looking for more info about documenting APIs. Or see my posts on AI and AI course section for more on the latest in AI and tech comm.
If you're a technical writer and want to keep on top of the latest trends in the tech comm, be sure to subscribe to email updates below. You can also learn more about me or contact me. Finally, note that the opinions I express on my blog are my own points of view, not that of my employer.