Skip to main content

Asdlc

@hivemq/asdlcv2026.06.24.1782315209beta· 1d agoMODELSWORKFLOWSREPORTS
01README

Agent-friendly Software Development Lifecycle models

02Models7
@hivemq/asdlc/classifyv2026.06.24.1782308849asdlc/classify.ts
fn classify(issueId: string, identifier?: string, title: string, description: string)
Classify a Linear issue as bug, feature, maintenance, or investigation/research. Uses claude CLI locally (Claude Code subscription) or Anthropic API in CI.
ArgumentTypeDescription
issueIdstringLinear issue ID
identifier?stringIssue identifier (e.g. PLT-123)
titlestringIssue title
descriptionstringIssue description

Resources

classification(infinite)— Issue classification result with token usage
lifecycleTrace(infinite)— OTel trace context for cross-workflow lifecycle correlation
@hivemq/asdlc/linearv2026.06.24.1782308849asdlc/linear-issue.ts
fn getIssue(identifier: string)
Fetch a single Linear issue by ID or identifier (e.g. PLT-955)
ArgumentTypeDescription
identifierstringIssue identifier (e.g. PLT-955) or UUID
fn listIssueComments(issueId: string)
Fetch all comments on a Linear issue. Each entry carries parentId so reply-listener style code can walk the thread. Uses the model's globalArgs.apiKey so callers don't need to pipe a Linear key through method inputs.
ArgumentTypeDescription
issueIdstringLinear issue ID
fn listCommentReplies(issueId: string)
Fetch only the reply comments (children) whose parent is in the supplied set. Uses the Linear SDK's server-side filter sdk.comments({ filter: { parent: { id: { in: parentIds } } } }) — one query, no client-side filtering, and no need to page the entire issue comment thread. Returns parentId on each entry so callers can group replies back to their parent.
ArgumentTypeDescription
issueIdstringIssue id — used as the resource instance key for the returned issueCommentList record
fn listCommentRepliesBatch()
Fetch reply comments whose parent is in the supplied set, across any number of issues, in a single Linear query. Uses the SDK's server-side filter sdk.comments({ filter: { parent: { id: { in: parentIds } } } }) — the same shape as listCommentReplies, but without the per-issue scoping. Designed for driver loops that need replies for many tickets in one workflow step (in-process via task: model_method) instead of N subprocess calls. Returns a flat array of replies where each entry carries parentId
fn addComment(issueId: string, body: string, dryRun?: boolean)
Post a comment on a Linear issue
ArgumentTypeDescription
issueIdstringLinear issue ID
bodystringComment body (Markdown)
dryRun?booleanSkip mutation when true
fn addLabel(issueId: string, labelName: string, dryRun?: boolean)
Add a label to a Linear issue by label name
ArgumentTypeDescription
issueIdstringLinear issue ID
labelNamestringLabel name to add
dryRun?booleanSkip mutation when true
fn removeLabel(issueId: string, labelName: string, dryRun?: boolean)
Remove a label from a Linear issue by label name
ArgumentTypeDescription
issueIdstringLinear issue ID
labelNamestringLabel name to remove
dryRun?booleanSkip mutation when true
fn setAssignee(issueId: string, assigneeId: string, dryRun?: boolean)
Set or change the assignee of a Linear issue
ArgumentTypeDescription
issueIdstringLinear issue ID
assigneeIdstringLinear user ID to assign
dryRun?booleanSkip mutation when true
fn setStatus(issueId: string, stateId: string, dryRun?: boolean)
Change the workflow state of a Linear issue
ArgumentTypeDescription
issueIdstringLinear issue ID
stateIdstringTarget workflow state ID
dryRun?booleanSkip mutation when true
fn listUnclassified()
List team issues that have no Issue Type label (Bug, Feature, Maintenance) and are not in completed or cancelled states. Returns an array of issue summaries for bulk classification.
fn getPlannable()
List team issues in Planning status assigned to the current user (API key owner). Returns an IssueBatchSchema resource.
fn assertStatus(issueIdentifier: string, currentStatus: string, expectedStatus: string)
Gate step: succeeds if Linear status matches expected value, throws with drift message otherwise
ArgumentTypeDescription
issueIdentifierstringIssue identifier for error message
currentStatusstringCurrent Linear status name
expectedStatusstringExpected status name
fn listProjectEligible(projectId: string)
Paginate all issues in a Linear project, filter to lifecycle-eligible tickets (Todo, Planning with approval comment, In Progress, In Review with merged PR, Validation), and write the result to the eligible resource spec at eligible-{projectId}.
ArgumentTypeDescription
projectIdstringLinear project ID (UUID)

Resources

issue(infinite)— A Linear issue snapshot
comment(infinite)— A comment posted to a Linear issue
batch(infinite)— Batch query result (e.g. unclassified issue list)
eligible(infinite)— Eligible project tickets for lifecycle processing
issueCommentList(infinite)— All comments on a single Linear issue at a point in time. Used by reply-listener style code that wants to see threads (each entry carries parentId) without holding a Linear API key itself.
replyBatch(infinite)— Replies fetched in a single batched Linear query across one or more parent comments. Produced by listCommentRepliesBatch; consumed by drivers that need replies for many tickets in one workflow step without per-ticket fan-out.
@hivemq/asdlc/planv2026.06.24.1782308849asdlc/plan.ts
fn generate(issueId: string, identifier?: string, title: string, description: string, labels?: array, stateName?: string, replanPrompt?: string)
Generate a plan for a classified Linear ticket. Runs adversarial review loop (up to N cycles). Posts plan as comment when review passes.
ArgumentTypeDescription
issueIdstringLinear issue ID
identifier?stringIssue identifier (e.g. PLT-941)
titlestringIssue title
descriptionstringIssue description
labels?arrayCurrent labels on the issue
stateName?stringCurrent Linear status name
replanPrompt?stringWhen set, bypasses the 'plan exists' guard and regenerates with this feedback as context. Provided by /replan <prompt> on the plan comment.
fn review(issueId: string, identifier?: string, reviewType: enum, scope: string, approach: string, acceptanceCriteria: string, priorFindings: array)
Run one review pass against an existing plan JSON. `reviewType=adversarial` loads `prompts/adversarial-review.md` (7-dimension principal-engineer review); `reviewType=security` loads `prompts/security-review.md` (7-dimension security-engineer review). Returns findings; does not mutate the plan. Multi-cycle gating is the caller's responsibility (e.g. the factory's plan-review stage maxCycles).
ArgumentTypeDescription
issueIdstringLinear issue ID
identifier?stringIssue identifier (e.g. PLT-941)
reviewTypeenumWhich review prompt to run. `adversarial` is the 7-dim principal-engineer sweep; `security` is the 7-dim security-engineer sweep. Plan-review workflow runs both in parallel.
scopestringPlan scope
approachstringPlan approach
acceptanceCriteriastringPlan acceptance criteria
priorFindingsarrayFindings from earlier review cycles (for regression awareness).

Resources

plan(infinite)— Plan artifact with 6 structured sections
review(infinite)— Adversarial review findings for a plan version
@hivemq/asdlc/implementv2026.06.24.1782308849asdlc/implement.ts
fn implement(issueId: string, identifier?: string, title?: string, planScope?: string, planApproach?: string, planRisks?: array)
Implement an approved plan: spawn headless claude session, create branch, write code, open PR, post URL to Linear.
ArgumentTypeDescription
issueIdstringLinear issue ID
identifier?stringIssue identifier (e.g. PLT-941)
title?stringIssue title
planScope?stringPlan scope text
planApproach?stringPlan approach text
planRisks?arrayPlan risks bullets

Resources

implementation(infinite)— Implementation artifact tracking agent work, branch, and PR
lifecycleTrace(infinite)— OTel trace context for cross-workflow lifecycle correlation
@hivemq/asdlc/githubv2026.06.24.1782308849asdlc/github.ts
fn fetchPrDiff(prNumber: number, issueId: string, identifier?: string)
Fetch the diff for a GitHub PR and persist it in the swamp datastore.
ArgumentTypeDescription
prNumbernumberGitHub PR number
issueIdstringLinear issue ID — used to scope the datastore entry
identifier?stringIssue identifier (e.g. PLT-973)

Resources

prDiff(infinite)— PR diff fetched from GitHub, scoped per issue ID
@hivemq/asdlc/reviewv2026.06.24.1782308849asdlc/review.ts
fn review(issueId: string, identifier?: string, prNumber: number, prUrl: string, planVersion: number, stateName?: string)
Review a draft PR's diff against plan acceptance criteria. Approves or posts inline findings.
ArgumentTypeDescription
issueIdstringLinear issue ID
identifier?stringIssue identifier (e.g. PLT-973)
prNumbernumberGitHub PR number
prUrlstringGitHub PR URL
planVersionnumberPlan version the implementation was built against
stateName?stringCurrent Linear status name

Resources

review(infinite)— Adversarial code review result
@hivemq/asdlc/validatev2026.06.24.1782308849asdlc/validate.ts
fn validate(issueId: string, identifier?: string, prNumber?: number, prNumbers?: string, stateName?: string, lifecycleTraceId?: string, lifecycleClassifySpanId?: string, lifecycleClassifiedAt?: string)
Validate a merged PR by checking CI deploy status and telemetry health. Posts report to Linear and transitions to Done on all-PASS.
ArgumentTypeDescription
issueIdstringLinear issue ID
identifier?stringIssue identifier (e.g. PLT-980)
prNumber?numberGitHub PR number (from implement data)
prNumbers?stringComma-separated PR numbers (fallback)
stateName?stringCurrent Linear status name
lifecycleTraceId?stringOTel traceId from classification
lifecycleClassifySpanId?stringOTel spanId from classification
lifecycleClassifiedAt?stringISO timestamp of classification

Resources

validation(infinite)— Post-merge validation result with CI and telemetry checks
lifecycleTrace(infinite)— OTel trace context for cross-workflow lifecycle correlation
03Workflows2
@hivemq/asdlc/on-label-removed09aef500-8418-4206-a9e1-e2feb0119c1c

Triggered when the swamp label is removed from a Linear issue. Posts an exit comment and marks the issue as no longer tracked. Does NOT trigger drift detection.

exit-swampFetch issue and post exit notice
1.fetch-issue— Fetch issue details from Linear
2.post-exit-comment— Post a comment noting the issue has left the swamp flow
@hivemq/asdlc/sweep-classify3288b612-e95d-4e57-a8f7-53ba61b2d93c

Bulk classification sweep — finds all team issues without an Issue Type label (Bug, Feature, Maintenance), classifies each one, applies the type label, and adds the swamp label to bring the ticket under swamp management. Pass dryRun=true to classify without mutating Linear.

discoverFind unclassified issues
1.list-unclassified— Query Linear for issues without a type label
classify-allClassify and label each unclassified issue
1.classify-${{ self.issue.identifier }}— Classify a single issue
2.apply-type-label-${{ self.issue.identifier }}— Apply the classified Issue Type label
3.add-swamp-label-${{ self.issue.identifier }}— Add the swamp label to bring the ticket under swamp management
04Reports1
@hivemq/asdlc/classificationworkflow
sweep-summary.ts

Summary table of issue classifications produced by classify-issues

asdlcclassification
05Previous Versions19
2026.06.24.1782308849Jun 24, 2026
2026.06.24.1782304686Jun 24, 2026
2026.06.24.1782301601Jun 24, 2026

Added 7, removed 1 models

2026.06.23.1782226719Jun 23, 2026
2026.06.23.1782225689Jun 23, 2026
2026.06.23.1782225124Jun 23, 2026
2026.06.23.1782217226Jun 23, 2026

Modified 2 models. Removed 3 workflows. Removed 1 skills

2026.06.23.1782216055Jun 23, 2026

Modified 2 models. Added 3 workflows. Added 1 skills

2026.06.23.1782215790Jun 23, 2026
2026.06.23.1782214162Jun 23, 2026

Modified 2 models. Removed 3 workflows. Removed 1 skills

2026.06.23.1782210877Jun 23, 2026

Modified 2 models. Added 3 workflows. Added 1 skills

2026.06.23.1782210341Jun 23, 2026

Modified 2 models. Removed 3 workflows. Removed 1 skills

2026.06.23.1782209758Jun 23, 2026
2026.06.23.1782209532Jun 23, 2026

Modified 2 models. Added 3 workflows. Added 1 skills

2026.06.22.1782145171Jun 22, 2026

Removed 1 workflows

2026.06.22.1782140165Jun 22, 2026

Modified 1 models

2026.06.22.1782100921Jun 22, 2026

Modified 1 models

2026.06.21.1782063374Jun 21, 2026

Modified 1 models

2026.06.21.1782047771Jun 21, 2026
06Stats
Downloads
27
Archive size
1.8 MB

Not yet scored.

A score will be generated the next time this extension is published. The owner can also trigger scoring manually.

07Platforms