Skip to content

Add organisational-dysfunction skill - #95

Open
sorensensig wants to merge 25 commits into
mainfrom
skill/organisational-dysfunction
Open

sorensensig wants to merge 25 commits into
mainfrom
skill/organisational-dysfunction

Conversation

@sorensensig

Copy link
Copy Markdown

What

Adds a new skill, organisational-dysfunction, that diagnoses recurring organisational and team dysfunctions through open sociotechnical systems theory — the DP1 (top-down bureaucracy) vs DP2 (self-managing teams) distinction.

It uses Anthropic's progressive-disclosure pattern:

  • SKILL.md — the router: a practitioner persona, the shared DP1/DP2 lens stated once, and a themed index of all 59 dysfunctions.
  • references/NN-*.md — one lean file per dysfunction: how it shows up → the sociotechnical diagnosis → what to do (structural fix vs. realistic local move), with cross-links.

When it triggers

Team/org problems that are structural rather than personal: stuck decisions, hollow agile rituals (standups, retros, OKRs, DORA), disengagement, a "frozen middle", stalled transformations, AI dropped into a broken process — especially when symptoms get blamed on individuals, mindset, or "communication".

Attribution

The 59 dysfunctions originate from Trond Hjorteland's "Organisational Dysfunction of the Day" series. Content is synthesised and paraphrased (not copied) through the OST framing he uses, and each reference links its specific source post.

Validation

  • npm run skill:validate → ✅ passes (organisational-dysfunction is valid)
  • npm run build → regenerated docs/README.skills.md (included); marketplace.json unchanged (skill, not a plugin)
  • Separately tested against a 29-scenario eval harness: triggering + routing accuracy 1.0 (stable across 3 runs), answer-quality rubric 0.97. Harness kept out of this PR to match the skills/ convention; it lives in the standalone repo: https://github.com/sorensensig/organisational-dysfunction

Notes

Skill only (no plugin wrapper) to match the existing skills/ convention. Happy to add a plugins/ wrapper if the team would prefer it installable as a named plugin.

sorensensig and others added 6 commits July 1, 2026 08:34
Adds a skill that diagnoses recurring organisational and team dysfunctions
through open sociotechnical systems theory (the DP1 top-down vs DP2
self-managing distinction). A router SKILL.md carries the shared lens and an
index of 59 named dysfunctions; each references/NN-*.md gives how it shows up,
the sociotechnical diagnosis, and concrete remedies.

The 59 dysfunctions originate from Trond Hjorteland's "Organisational
Dysfunction of the Day" series; content is synthesised/paraphrased (not copied)
and each reference links its source post.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- `#63` The leadership team that isn't — a leadership "team" that is really
  serial reporting to the CEO, with no goals none of them can reach alone.
- `#64` The code review that became personal — a recurring two-person conflict
  read as a personality clash, produced by a structure that makes critique a
  status contest.

Both synthesised through open sociotechnical systems theory from Trond
Hjorteland's "Organisational Dysfunction of the Day" series, following the same
authoring guide as the existing entries; paraphrased, never copied.

SKILL.md is synced with upstream: the router carries no kihub-specific content,
and the diff is exactly the reference count (62 -> 64) plus the two new index
entries. The kihub-specific README is untouched apart from appending its 0.4.0
changelog entry — its install instructions still point at Altinn/kihub.

`npm run skill:validate` passes: all 3 skills valid.
@sorensensig

Copy link
Copy Markdown
Author

Flagging the obvious about this PR, since it now predates a significant change on main.

This branch was opened on 2026-07-01 against the previous repository layout, where contributed skills lived in skills/<name>/ and were checked by npm run skill:validate. The "Start from scratch — new architecture" commit landed the following day and moved KI Hub to its current shape — no skills/ directory, and the model described in the README:

KI Hub indexes, enriches, reviews, and exposes artifacts; it never stores their content (that lives in the sibling ai-artifacts repository).

So this PR contributes content to a repo that deliberately no longer holds it, and the docs/README.skills.md conflict is a symptom of that rather than something worth resolving in place.

Intent: re-target this contribution to ai-artifacts once that repository is published. The skill isn't being withdrawn — it just belongs on the other side of the new split.

Until then the branch is kept current with upstream (it's at 64 dysfunctions as of today) so it's ready to move across rather than needing a rebuild. No review effort is warranted on it in the meantime, and no action is needed from maintainers.

One thing that would help when the time comes: a pointer to ai-artifacts and its expected artifact layout, so the contribution lands in the right shape first time.

sorensensig and others added 4 commits August 5, 2026 12:04
- `#65` The facilitator's toolkit — treating facilitation technique as the
  variable when the constraint is the authority the room actually holds.

Synthesised through open sociotechnical systems theory from Trond Hjorteland's
"Organisational Dysfunction of the Day" series, following the same authoring
guide as the existing entries; paraphrased, never copied.

SKILL.md synced with upstream: the diff is the reference count (64 -> 65) plus
one index entry. The kihub-specific README is untouched apart from its 0.5.0
changelog entry.

`npm run skill:validate` passes: all 3 skills valid.
Propagates "Everything is fine" from the upstream series: status stays
green all the way up because each hop softens bad news and the level
above cannot act on it anyway.

- references/66-everything-is-fine.md added
- SKILL.md synced with upstream (index entry + reference count 65 -> 66)
- skill README changelog entry 0.6.0; kihub-specific install paths untouched
- npm run skill:validate passes (3/3 skills valid)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds the reference merged into sorensensig/ai-corner-store main since the
last propagation, keeping this contribution branch current with upstream.

- references/67-the-it-business-divide.md (new) — shared ceremonies and
  embedded engineers, but roadmap, technical decisions and budgets still
  sit apart, so only the CEO integrates them.
- SKILL.md synced with upstream (router carries no kihub-specific content):
  index line for no. 67, reference count 66 -> 67.
- skills/organisational-dysfunction/README.md: dated changelog entry only.
  Its kihub-specific install/use instructions are deliberately untouched.

npm run skill:validate passes (3/3 skills valid). npm run build deliberately
NOT run — it regenerates docs/README.skills.md from this branch's superseded
architecture.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds references/68-the-bureaucracy-that-became-the-work.md ("The
bureaucracy that became the work"), bringing the skill to 68
dysfunctions.

- SKILL.md synced with upstream: index line for no. 68 added under its
  theme heading and the reference count updated 67 -> 68. The router
  carries no kihub-specific content, so it is copied wholesale.
- skills/organisational-dysfunction/README.md: dated Changelog entry
  only (0.8.0 - 2026-08-10). kihub's own install/use instructions are
  left untouched.
- npm run skill:validate passes (all 3 skill folders valid).

Propagated by the org-dysfunction-watcher pipeline from
sorensensig/ai-corner-store main.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
sorensensig and others added 13 commits August 12, 2026 09:42
Propagated from sorensensig/ai-corner-store main (68 -> 69 dysfunctions).

- references/69-playing-politics.md — new: informal influence as a structural
  output of concentrated authority plus contested scarce resources; Herbst on
  bureaucracies being unable to function without the informal practices that
  grow inside them.
- SKILL.md — synced with source: index line under "Leadership, power &
  decisions", reference count 68 -> 69.
- README.md — kihub-local file, install paths untouched: appended changelog
  0.9.0, and corrected the two stale prose counts (59 -> 69) that had drifted
  since the initial contribution.

npm run skill:validate: passed (3/3 skills valid). npm run build deliberately
not run — it regenerates docs/README.skills.md from this branch's superseded
architecture.
Propagated from sorensensig/ai-corner-store main
(organisational-dysfunction/skills/organisational-dysfunction/).

- references/70-the-blind-decision.md added (69 -> 70 references).
- SKILL.md synced with upstream: index line for no. 70 under its theme
  heading, and the "The N reference files" count corrected 69 -> 70.
- README.md: dated changelog entry 0.10.0 and the two prose counts
  corrected 69 -> 70. kihub-specific install paths and clone URL left
  untouched.

npm run skill:validate passes (3/3 skills valid). Deliberately did NOT run
npm run build — it regenerates docs/README.skills.md from this branch's
superseded architecture.
Reconciles this branch with sorensensig/ai-corner-store main, which now
carries 72 references. Two were missing here:

- no. 71 "The values on the wall"
- no. 72 "Hired from above"

Also synced the router SKILL.md from upstream (index lines for both new
entries plus the reference-count sentence, 70 -> 72). The router carries
no kihub-specific content, so it is copied wholesale.

The kihub-local README keeps its own install paths and clone URL
untouched; only the two stated dysfunction counts (70 -> 72) and a new
dated changelog entry (0.11.0) were changed.

npm run skill:validate passes (all 3 skill folders valid).
Propagates the reference merged into sorensensig/ai-corner-store main since
the last update on this branch:

- references/73-what-the-war-room-proves.md — incident mode grants the team
  full authority and works; the same decision takes days once nothing is on
  fire, which shows the constraint was never capability.

SKILL.md synced with the upstream router (index line for no. 73, reference
count 72 -> 73). README.md changelog entry added and its dysfunction count
corrected 72 -> 73; kihub-specific install paths left untouched.

npm run skill:validate passed (3/3 skills valid).
Adds references/74-matrices.md, propagated from sorensensig/ai-corner-store
main where it was merged as part of the organisational-dysfunction release.

SKILL.md synced with upstream (index entry for no. 74 under Leadership, power
& decisions; reference-file count 73 -> 74). The kihub-specific README keeps
its own install paths and clone URL; only its dysfunction count (73 -> 74) and
a dated changelog entry were touched.

npm run skill:validate passes (all 3 skills valid). Per the upstream runbook,
npm run build was deliberately not run: it regenerates docs/README.skills.md
from this branch's pre-restructure architecture and would deepen the standing
conflict on a PR that is parked pending the ai-artifacts repository.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…vided for efficiency

Adds references/75-divided-for-efficiency.md from upstream (a workshop splits
into parallel groups to cover more ground, and afterwards nobody can recall
what the other tables decided or why — suboptimisation applied to a
conversation).

SKILL.md synced with upstream: the new entry is indexed under Rituals &
ceremonies, and the reference count corrected 74 -> 75. The kihub-specific
skill README keeps its own install paths; only its dysfunction counts (74 ->
75) and a dated changelog entry (0.14.0) were updated.

npm run skill:validate passes (all 3 skill folders valid).
…upstream

Propagates the reference already merged into sorensensig/ai-corner-store
main but missing here, keeping this contribution branch current with
upstream while the PR is parked.

- Added references/76-we-transformed-our-suppliers-didnt.md — the internal
  redesign worked, and then every request that leaves the building hits a
  vendor backlog or a ticket tier (DP2 org inside a DP1 ecosystem).
- Synced SKILL.md with upstream main: index line under "Strategy, direction
  & environment" and reference count 75 -> 76. The router carries no
  kihub-specific content.
- README.md: dysfunction count 75 -> 76 in both prose mentions, plus a dated
  0.15.0 changelog entry. kihub's own install paths and clone URLs are
  deliberately untouched.

`npm run skill:validate` passes (3/3 skills valid). `npm run build` was NOT
run — it regenerates docs/README.skills.md from this branch's superseded
architecture and would deepen a conflict that will not be resolved here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…upstream

Adds references/77-becoming-teal.md (Becoming Teal) from
sorensensig/ai-corner-store main, bringing the skill to 77 dysfunctions.

- SKILL.md synced with upstream router (index line for no. 77, count 76 -> 77).
- kihub README.md: dysfunction count corrected to 77 in both places, dated
  changelog entry 0.16.0 added. kihub-specific install paths left untouched.
- npm run skill:validate passes (all 3 skill folders valid).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Reconciliation run by the org-dysfunction-watcher loop against
sorensensig/ai-corner-store main.

- Added references/78-back-to-the-office.md
- Synced SKILL.md with upstream (index line + reference count 77 -> 78);
  the router carries no kihub-specific content
- kihub README: corrected the dysfunction count 77 -> 78 and appended a
  dated changelog entry. kihub's own install paths and clone URLs are
  deliberately left untouched.
- npm run skill:validate passes (3/3 skills valid)

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds references/79-the-adaptation-plan-nobody-owns.md, propagated from
sorensensig/ai-corner-store main (release 0.19.0). AI coding assistants scaled
across every team while the organisation's green-coding standards predate the
technology, so the environmental consequence belongs to no function — read as
Emery/Trist Type IV turbulence met with a DP1 planning instrument.

SKILL.md synced with the upstream router (index line added, reference count
78 -> 79). The skill README's dysfunction count corrected to 79 and a dated
changelog entry appended; all other kihub-specific content in that README
(install paths, clone URL) left untouched.

npm run skill:validate passes (all 3 skill folders valid). npm run build
deliberately not run — it regenerates docs/README.skills.md from this branch's
superseded architecture.
Catch-up propagation of five upstream entries that landed in
sorensensig/ai-corner-store main since the last kihub sync (2026-08-26,
no. 79). References added:

- no. 80 When the glue leaves
- no. 81 Loose in name only
- no. 82 The wrong people in the room
- no. 83 The wellness programme
- no. 84 Deskilled by AI

Router SKILL.md synced with upstream (index lines for the five new
entries; the hard-coded reference count corrected 79 -> 84). The skill
README's dysfunction count corrected in the same way and a dated
changelog entry appended; all kihub-specific divergences in that file
(install paths, clone URL, skills-guide link) left untouched.

npm run skill:validate passes (all 3 skill folders valid). npm run build
deliberately not run - it regenerates docs/README.skills.md from this
branch's superseded architecture.
Catch-up propagation from sorensensig/ai-corner-store main (84 -> 88
references):

- no. 85 The enterprise architect
- no. 86 Removing management
- no. 87 It took an outsider to say it
- no. 88 The gates they removed

Router SKILL.md synced with upstream (index lines for the four entries
plus its reference count); the router carries no kihub-specific content,
so it is taken wholesale. kihub's own skill README keeps its Altinn/kihub
install paths untouched — only its dysfunction count (84 -> 88) and a
dated changelog entry (0.20.0) are updated.

npm run skill:validate passes (all 3 skills valid). npm run build was
deliberately not run: it regenerates docs/README.skills.md from this
branch's superseded architecture and would deepen an unresolvable
conflict.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds `#89` **We need a resource** from the upstream series (88 -> 89
dysfunctions): staffing a person by a label on a profile and an open slot
in a calendar, so the expertise the assignment actually needed never
reaches it.

- references/89-we-need-a-resource.md (new)
- SKILL.md synced with upstream (index line + reference count)
- README.md: dysfunction counts 88 -> 89, changelog entry 0.21.0.
  kihub-specific install paths and clone URLs left untouched.

`npm run skill:validate` passes (3/3 skills valid). `npm run build` was
deliberately not run - it regenerates docs/README.skills.md from this
branch's superseded architecture.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Catch-up propagation of three upstream entries (89 -> 92 dysfunctions):

- references/90-somebody-has-to-chase-it.md (new): the topology gave teams
  control but never designed the negotiation between them.
- references/91-endless-alignment-meetings.md (new): syncs and steering
  updates fill the calendar because boundaries make coordination manual.
- references/92-the-change-they-stopped-believing-in.md (new): repeated
  transformations that changed the vocabulary but never the design principle.
- SKILL.md synced with upstream (three index lines + reference count).
- README.md: dysfunction counts 89 -> 92, changelog entry 0.22.0.
  kihub-specific install paths and clone URLs left untouched.

`npm run skill:validate` passes (3/3 skills valid). `npm run build` was
deliberately not run - it regenerates docs/README.skills.md from this
branch's superseded architecture.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant