Skip to content
Back to skills

Dhpk Module Design

ASecurity

Use when users need architecture decisions, module boundaries, or implementation guidance for software development tasks. Supports design, review, compare, and bounded adversarial modes. Not for pure documentation editing or non-technical writing tasks. Output: actionable, stack-neutral architecture guidance with explicit seams, trade-offs, and implementation-ready recommendations.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 2, 2026
ai-agentssecuritydocumentation

Security analysis

A100/100

Scanned September 20, 2026

npx -y skills add hmj1026/dhpk --skill dhpk-module-design --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dhpk Module Design?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dhpk Module Design
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hmj1026-dhpk-module-design-dhpk/badge)](https://www.skillsdirectory.com/skills/hmj1026-dhpk-module-design-dhpk)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: dhpk-module-design
argument-hint: '"<question>" [--context <files>] [--mode design|review|compare|adversarial] [--second-opinion=codex-exec]'
description: 'Use when users need architecture decisions, module boundaries, or implementation guidance for software development tasks. Supports design, review, compare, and bounded adversarial modes. Not for pure documentation editing or non-technical writing tasks. Output: actionable, stack-neutral architecture guidance with explicit seams, trade-offs, and implementation-ready recommendations.'
metadata:
  dhpk-invocation-class: implicit-eligible
---

# Module design

Design the smallest deep module that makes the caller's next decision easy.
Keep this guidance stack-neutral until the repository evidence selects a
framework or language.

## Scope before scan

Start with the user's named module, subsystem, or pain point. When no direction
is named, use recent commit history to find the hot spots that keep changing and
weight the exploration there. Do not propose deepening across the whole
codebase before a real seam, caller, and near-term change are identified; this
is the YAGNI filter for architecture work.

## Modes

Select exactly one mode from `design`, `review`, `compare`, or
`adversarial`; `design` is the default. In every mode, frame the question,
constraints, scope, risks, and decision criteria before recommending a seam.

- **Design** proposes a boundary for a new capability or change.
- **Review** evaluates an existing boundary against callers, data flow, and
  failure modes.
- **Compare** scores concrete alternatives against the named criteria rather
  than treating personal preference as evidence.
- **Adversarial** forms an independent Proposal A and, only when explicitly
  requested, a blind Proposal B; run three bounded critique rounds by default
  and never more than five. Preserve material disagreement and stop with
  `unresolved disagreement` when the evidence does not support convergence.

## Optional second opinion

The primary path uses only the current in-process model and does not invoke a
second opinion. An explicit `--second-opinion=codex-exec` opt-in may run
`codex exec` as a blind, clearly labelled additional proposal or critique; it
must never replace the primary recommendation or become a silent fallback.
Record the question, constraints, research summary, assumptions, decision
criteria, failure modes, and any changed recommendation for that opinion.

## Boundary tests — SSOT: architecture/tests own runtime behavior; this skill owns boundary decisions

- **Caller leverage**: define the decision the caller should make and make the
  module absorb the policy and variation behind that decision.
- **Deletion test**: temporarily imagine deleting the proposed abstraction. If
  callers become simpler or no behavior is lost, delete it; a name alone is
  not a module boundary.
- **Interface-as-test-surface**: make the public interface the behavior seam;
  tests should assert caller-visible outcomes through it, not private helpers.
- Keep one hypothetical adapter inline. Introduce an abstraction only when
  there are two real adapters, or when a documented near-term boundary has a
  concrete test or deployment need. Do not design for speculative providers.
- Make the change easy before making the easy change: prefer a small
  prefactor that improves locality only when the next requested behavior needs
  it, and record speculative candidates as deferred rather than building them.

## Language and scenarios

- Maintain an **active glossary** for domain terms; challenge an
  **ambiguous-term** before it reaches an interface or event name.
- Write edge-case scenarios for empty, duplicate, partial, stale, and failed
  inputs as applicable. A happy path is not a boundary contract.
- Prefer domain-specific names and focused files. Avoid generic buckets that
  hide ownership or make deletion difficult.

## Decisions and output

Recommend a boundary, interface, data flow, and trade-offs. Record an ADR only
when the decision is surprising, hard-to-reverse, or likely to be revisited;
routine local choices belong in the implementation plan or tests.

For adversarial work, report the question and criteria, each independent
proposal, every bounded critique round, evidence versus inference, convergence
status, final recommendation, residual risks, and the smallest follow-up
experiment or decision. Never claim independent verification unless the named
second opinion actually ran.

## When NOT to Use

- Tracing an existing execution path without a boundary decision (use
  `code-trace`).
- Implementing an already-confirmed design (use `flow-guide` or the
  matching OpenSpec apply route).
- Reviewing code or security controls (use `change-verdict` or
  `change-verdict`).

## Verification

- [ ] Caller leverage and the deletion test justify the boundary.
- [ ] The interface is an observable test surface with independent expected values.
- [ ] Adapter count and abstraction threshold are explicit.
- [ ] Glossary ambiguities and edge-case scenarios are named.
- [ ] ADR use is limited to surprising or hard-to-reverse decisions.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.