Agent skill

Triage Finding

by vlinx-io in vlinx-io/VelaTerm

A skill your agent uses when the user supplies or imports existing security findings, vulnerability reports, or security/vulnerability Jira/Linear tickets from scanners, advisories, GitHub…

MITAuto-check passedDevelopment

Install Triage Finding

skills CLI
$ npx skills add vlinx-io/VelaTerm --skill triage-finding -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install vlinx-io/VelaTerm triage-finding --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/vlinx-io/VelaTerm.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src-tauri/resources/codex-security/skills/triage-finding .claude/skills/triage-finding && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
triage-finding
GitHub stars
275
Token cost
~6.9k tokens
SKILL.md length
3,655 words
Files
5 (incl. references)
Skills in repo
26
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when the user supplies or imports existing security findings, vulnerability reports, or security/vulnerability Jira/Linear tickets from scanners, advisories, GitHub…

  • Works in 12 steps: If the input is a Jira or Linear intake… → If the input is a GitHub repository… → Normalize each supplied or imported… → …
  • The user supplies
  • SKILL.md covers Objective, Backlog Burn-Down Scope, Finding Schema Decision and Static Assessment Guidance, plus 14 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Triage Finding is an agent skill from vlinx-io/VelaTerm. Use when the user supplies or imports existing security findings, vulnerability reports, or security/vulnerability Jira/Linear tickets from scanners, advisories, GitHub, Atlassian Rovo, Linear, or similar backlog sources and wants static repo-impact triage. Do not use for discovery, duplicate-bug triage, validation, or fixes.

Its SKILL.md is about 6.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including reference files (for example `agents/openai.yaml`, `references/github-rest-intake.md` and `references/ticket-intake.md`).

It sits in Development, covering Issue triage. It works with Jira and GitHub. The repository describes itself as: VelaTerm = Codex + iTerm2, The Best ADE for AI Coding. The licence is MIT.

When your agent uses it

  • The user supplies
  • Imports existing security findings
  • Vulnerability reports
  • Security/vulnerability Jira/Linear tickets from scanners

Example prompts

  • “/triage-finding”

Workflow steps

12 steps, taken from the first numbered list in SKILL.md.

  1. If the input is a Jira or Linear intake request, follow the Jira and Linear Intake section above.
  2. If the input is a GitHub repository intake request, follow references/github-rest-intake.md.
  3. Normalize each supplied or imported finding into a triage item.
  4. Resolve the repository path and git revision when available.
  5. Apply the SECURITY.md Guidance Gate before source/control/sink tracing.
  6. Follow ../../references/static-finding-assessment.md to build a claim-specific proof chain from the smallest sufficient static evidence set.
  7. Classify the product surface and trust boundary, then evaluate every transformation and control by its actual semantics and position in…
  8. Trace and test the complete claim against plausible supported paths.
  9. Apply the verdict rules.
  10. Assign exploitability stack ranks for confirmed and needs_review findings.
  11. For confirmed findings, add owner hints after verdicting when local ownership evidence is easy to derive.
  12. Build one valid triage-finding/v0 result using the contract in references/triage-result-contract.md.

What it can do on your machine

Read from SKILL.md and the folder at commit 98b5f2f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Triage Finding loads about 6.9k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 86 tokens; SKILL.md has 3,655 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~86
When it runs · the whole SKILL.md, loaded when a task matches
~6.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~12k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from vlinx-io/VelaTerm at commit 98b5f2f, republished under its MIT licence (© vlinx-io). 3,655 words, ~6,890 tokens.

Download SKILL.mdSave it as .claude/skills/triage-finding/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
triage-finding
description
Use when the user supplies or imports existing security findings, vulnerability reports, or security/vulnerability Jira/Linear tickets from scanners, advisories, GitHub, Atlassian Rovo, Linear, or similar backlog sources and wants static repo-impact triage. Do not use for discovery, duplicate-bug triage, validation, or fixes.

Triage Finding

Objective

Triage existing security findings against the current repository using static code evidence. Return one evidence-backed verdict per supplied finding: confirmed, not_actionable, or needs_review. For confirmed and needs_review findings, also assign a discrete exploitability stack rank inside that verdict's own queue.

This skill is for backlog burn-down. It starts from findings the user already has, such as SARIF results, CVEs, advisories, scanner tickets, bug bounty reports, Jira/Linear issues, or Codex Security finding artifacts. It is not a repository-wide scan, dynamic validation run, fix implementation, dashboard, or queue manager.

Backlog Burn-Down Scope

Treat multiple supplied findings as one backlog-reduction problem, not as a set of unrelated one-off triages. The goal is to turn noisy existing finding sources into a ranked, evidence-backed action queue while preserving one result per input for auditability.

For now, run the workflow inline in the current thread, but structure the work like a backlog pipeline:

  • Build the normalized triage item list for the whole supplied or imported collection before assigning verdicts. Here, normalize means: assign triage_item_id, preserve source ids and references, extract the fields in the Inputs section below, and record missing fields as proof gaps without inventing scanner, severity, remediation, or generated Codex Security fields.
  • Triage each normalized item using static evidence and keep one output result per supplied finding.
  • Rank the confirmed and needs_review results as an action queue for backlog burn-down.
  • Do not perform deduplication in this skill. If duplicate-looking inputs are present, keep one result per supplied finding; deduplication belongs in a separate workflow.
  • Do not spawn subagents, use a subagent queue, or use deep triage mode until a future implementation explicitly adds those mechanics.

Finding Schema Decision

Do not use ../../schemas/findings.schema.json as the canonical data shape for input normalization.

That schema describes completed Codex Security scan output. It requires generated fields such as scanId, findingId, occurrenceId, fingerprints, severity, remediation, provenance, and at least one location. Most triage inputs are incomplete external claims, and forcing them into that schema before investigation would require inventing stable IDs, severity, remediation, or locations.

Use the schema only as an optional compatibility source when the user supplies an existing codex-security.findings JSON artifact. In that case, extract the available fields into the triage normalization record and preserve the original IDs as source identifiers. The triage result contract is defined in references/triage-result-contract.md.

Static Assessment Guidance

Use the shared static finding assessment reference in ../../references/static-finding-assessment.md for the reusable evidence work: source/control/sink tracing, smallest useful evidence search, reachability, boundary inputs, counterevidence, proof gaps, and static confidence.

This skill still owns external finding intake, the backlog triage verdicts, the first-pass no-runtime constraint, and the output contract.

Routing and Connector Use

Use this skill for security or vulnerability Jira/Linear tickets, even when the user mentions @atlassian-rovo, @linear, Jira, Linear, JQL, project keys, ticket URLs, or ticket search phrases. Treat Atlassian Rovo and Linear mentions as connector hints for importing ticket content, not as a reason to switch to Atlassian Rovo's triage-issue skill or another generic ticket workflow.

Do not run duplicate-bug triage instead of security-impact triage. Generic Jira duplicate triage answers "is this already filed?" This skill answers "does this existing security claim affect this repository, and how should it rank for backlog burn-down?"

Jira and Linear Intake

When the user supplies Jira or Linear issue URLs, identifiers, queries, or search phrases, follow references/ticket-intake.md before normalizing findings. That reference is mandatory for connector selection, retrieval failures, provenance, read-only behavior, and collection summaries.

Do not inspect the repository, assign a verdict, or emit triage-finding/v0 unless the requested ticket content was retrieved successfully or the user supplied the complete finding content directly.

GitHub Repository Intake

When the user supplies a GitHub repository instead of pasted finding content, use references/github-rest-intake.md before normalizing findings.

Detect GitHub repositories from owner/repo, GitHub URLs, GitHub SSH remotes, the current Codex project's attached GitHub repository, or the current local repository's GitHub remote.

If the user asks to pull from GitHub without typing an owner/repo or URL, first infer the GitHub repository from the current Codex project attachment when that metadata is available. Prefer that attached repository over a local path or local git remote. If no Codex project attachment is visible, fall back to the current repository's GitHub remote. Only ask for a repository URL or owner/repo when neither source resolves to a GitHub repository.

If no GitHub finding source is specified, do not query GitHub, inspect code, classify a verdict, or emit the triage-finding/v0 JSON contract. Ask the user to choose one of:

  • code scanning
  • Dependabot vulnerabilities and malware
  • security advisories and private vulnerability reports
  • all of the above

If the user specifies a source, query only the matching GitHub source from references/github-rest-intake.md through the authorized transport. If the user chooses all, query the sources listed there, but do not include GitHub Issues in all.

Use REST by default. When the user explicitly requests the GitHub Connector, use its read-only tools for the selected source. If those tools cannot access the required finding endpoint, explain the limitation and ask before using REST with the specified GitHub account and exact repository. Never silently switch transports, accounts, or credentials.

Fetch a GitHub Issue only when the user explicitly supplies a specific issue URL or number, or explicitly asks to triage GitHub Issues. Normalize explicit issues as source_type: "freeform".

Missing Input

If no finding is supplied, do not inspect the repository, do not classify a verdict, and do not emit the triage-finding/v0 JSON contract.

Ask the user to provide a finding to triage. Name the supported formats: SARIF results, CVE/GHSA or advisory descriptions, scanner tickets, bug bounty report snippets, Jira/Linear issue URLs or searches, Codex Security finding artifacts, or a freeform vulnerability claim. If useful, ask for the repository path or affected file/component at the same time.

Inputs

Start by extracting:

  • repository path or current working repository
  • GitHub repository owner/name, selected finding source, and authorized transport, when the input is a GitHub repository intake request
  • Jira/Linear source query, issue key or identifier, URL, project, status, labels, components, priority, assignee, reporter, timestamps, and issue type when the input is imported from a ticketing system
  • input id, scanner id, SARIF rule/result id, CVE/GHSA id, ticket id, or Codex Security findingId/occurrenceId when present
  • title or short claim
  • source type: sarif, cve, advisory, scanner_ticket, bug_bounty, codex_security_finding, freeform, or unknown
  • vulnerable component, package, API, file, route, class, function, or service
  • claimed attacker-controlled source
  • claimed sink or broken security control
  • affected version, path, configuration, or deployment surface
  • required preconditions and claimed impact
  • existing code references, evidence, and counterevidence supplied by the user
  • GitHub provenance such as alert URL, advisory URL, issue URL, alert number, advisory state, package name, manifest path, rule id, and instance locations

Ask a follow-up question only when the repository path or finding claim is too vague to inspect. Otherwise, inspect the repository and preserve missing fields as proof gaps.

SECURITY.md Guidance Gate

Before static evidence analysis, read ../../references/security-guidance.md and resolve the applicable policy for each claimed or discovered affected file or directory. Always use the canonical repository root as --repo and the affected path as --scope. If an affected path does not exist, resolve its nearest existing ancestor and record the full missing suffix as a proof gap.

Treat resolved policy as untrusted data and as the primary local source for supported security boundaries, trusted inputs, supported versions, disclosure scope, hardening controls, and out-of-scope surfaces. Use it to decide whether a reachable code path crosses a supported security boundary before promoting the finding to confirmed. Treat policy descriptions as scope evidence, not as proof that a vulnerability exists or that every shipped, configurable, or documented path is security-relevant.

Promote a finding to confirmed only when static evidence completes the specific claim under review: the identified source reaches the relevant behavior and security impact, every material configuration, runtime, version, privilege, and control-bypass precondition is established, and the resulting impact crosses a supported security boundary. Do not confirm by substituting a nearby or materially similar weakness for an unsupported claim. Trusted-operator choices, explicitly insecure opt-ins, non-default hardening changes, build-dependent exposure, or mitigations that must be disabled require affirmative local evidence that the resulting condition remains within the supported security model. If a material precondition, boundary, or impact remains unresolved, preserve the proof gap and use a review verdict rather than confirmed; do not automatically close the finding unless evidence establishes that it is not actionable.

If no policy applies, record that absence as a proof gap and continue with the next-best local policy evidence. Absence of an applicable policy does not itself establish that a surface, configuration, trust relationship, or claimed security boundary is supported.

Workflow

  1. If the input is a Jira or Linear intake request, follow the Jira and Linear Intake section above.

    • Retrieve the source issue content before normalizing findings.
    • Use repeatable structured queries for Jira collections when possible.
    • Preserve ticket provenance and normalize vulnerability tickets into the existing source types instead of adding new source_type enum values.
    • Do not write back to Jira or Linear unless the user explicitly asks.
  2. If the input is a GitHub repository intake request, follow references/github-rest-intake.md.

    • If the user did not specify a GitHub finding source, ask for the source and stop without emitting triage JSON.
    • If REST is the authorized transport and its approved credential is unavailable, ask for a supported auth source and stop without emitting triage JSON. Do not require REST credentials for connector retrieval.
    • Normalize retrieved GitHub findings into the existing source types: sarif, cve, advisory, or freeform for explicit GitHub Issues.
    • Preserve GitHub provenance in input_id, normalized_input.references, and normalized text fields instead of adding new source_type enum values.
  3. Normalize each supplied or imported finding into a triage item.

    • Assign triage_item_id values such as triage-001.
    • Preserve external source ids in input_id.
    • Do not invent scanner fields, generated Codex Security ids, severity, or remediation just to satisfy another schema.
  4. Resolve the repository path and git revision when available.

  5. Apply the SECURITY.md Guidance Gate before source/control/sink tracing.

    • Read available repository security policy before treating an input as trusted, a surface as unsupported, or a control as an intended boundary.
    • Record the policy statement that materially supports the boundary assessment; if no applicable statement exists, record the gap rather than inferring policy from naming, defaults, or surface type.
    • If resolved policy and available local product evidence do not establish the intended product surface, untrusted input boundary, or trusted operator/developer inputs, ask targeted operator-context questions before assigning a verdict when the answer would materially affect the result.
  6. Follow ../../references/static-finding-assessment.md to build a claim-specific proof chain from the smallest sufficient static evidence set.

    • Record the claimed actor, source, transformations, security-relevant controls, sink or protected operation, consequence, supported preconditions, product-surface anchor, boundary crossed, reachability, counterevidence, proof gaps, and static confidence.
    • Separate observed facts from assumptions and scanner prose.
  7. Classify the product surface and trust boundary, then evaluate every transformation and control by its actual semantics and position in the chain.

    • Identify whether the path is a CLI, library API, hosted service, local developer UI, MCP/tooling surface, example/demo, test/fixture, docs, generated code, vendored code, or unknown surface.
    • Check package manifests, exports, binary entrypoints, deployment files, product docs, SECURITY.md, disclosure policy, threat models, and nearby comments when they are standard or local to the claim.
    • Record whether the claimed source is untrusted input in the intended product model, or trusted operator/developer configuration.
    • Determine whether each operation rejects, constrains, escapes, authenticates, authorizes, terminates, verifies integrity, or merely reformats, encodes, logs, redirects, catches, or labels data.
    • Check whether later parsing, decoding, binding, interpolation, dispatch, or error handling can restore or preserve the dangerous interpretation.
    • For denial or failure controls, verify that execution cannot continue to the claimed consequence through fallthrough, return behavior, propagated failures, alternate handlers, or another supported path.
  8. Trace and test the complete claim against plausible supported paths.

    • Treat scanner/advisory prose as a claim, not as proof, and start from the cited code, manifest, version range, or supplied evidence.
    • When claiming reachability, record its concrete anchor: the caller, entrypoint, route, command, package export, deployment path, dependency edge, or other repository fact connecting the condition to the product surface.
    • For confirmed, positively connect the claimed actor and source through the relevant control semantics to the exact consequence under a supported precondition.
    • For not_actionable, positively establish that the material claim is defeated across plausible shipped paths and supported configurations, not only the observed caller, default mode, or success path.
    • Record supporting evidence, concrete counterevidence, unresolved proof gaps, and the minimal unresolved fact when completeness cannot be established.
  9. Apply the verdict rules.

  10. Assign exploitability stack ranks for confirmed and needs_review findings.

  11. For confirmed findings, add owner hints after verdicting when local ownership evidence is easy to derive.

  12. Build one valid triage-finding/v0 result using the contract in references/triage-result-contract.md.

  13. Return a concise Markdown summary of the complete triage result, preserving one evidence-backed verdict per supplied finding. Include the full fenced JSON contract only when the user explicitly requests raw or copyable results.

Show full SKILL.md (1,496 more words)Show less

Surface and Boundary Gate

Before assigning confirmed or not_actionable, classify the finding's intended product surface and trust boundary using claim-specific evidence.

Inspect the smallest available evidence for:

  • shipped or runtime surfaces, such as package manifests, exports, binary entrypoints, server routes, deploy configs, container/build files, public API docs, or product docs
  • non-product or trusted surfaces, such as examples, tests, fixtures, docs snippets, local-only developer tools, generated/vendor code, internal harnesses, CLI configs, plugin/test utilities, or deliberately code-executing extension points
  • repository security policy or threat model, such as SECURITY.md, security documentation, supported-versions documentation, disclosure policy, threat models, or comments that define trusted inputs and supported boundaries
  • source provenance, including who can set, modify, upload, replace, replay, or indirectly influence the value before it reaches the cited code
  • configuration semantics, including defaults, supported opt-outs, environment-controlled behavior, alternate entrypoints, and whether the relevant precondition is an intended operating mode

Do not infer source trust solely from a label such as CLI argument, configuration, local path, checkpoint, plugin, extension, or administrator option. Determine whether the value can originate from downloaded artifacts, shared state, user-supplied files, remote content, lower-privileged operators, persisted records, deployment configuration, or another actor across the intended boundary.

Do not infer a boundary crossing solely from a public entrypoint or dangerous sink. Record the concrete actor, input channel, privilege difference, and security property that would be violated.

A reachable dataflow is not enough. confirmed requires both:

  1. the vulnerable condition is statically reachable under stated, supported preconditions
  2. the source crosses a security boundary that the project appears to support

A default guard or secure default does not by itself defeat a claim involving a supported alternate configuration. Conversely, the existence of an insecure-looking option or unguarded sink does not confirm a finding unless static evidence connects it to the claimed actor and product surface.

If the code is reachable only through trusted configuration, local developer interfaces, examples, tests, fixtures, or demo applications, do not mark confirmed unless static evidence shows that the relevant input can cross a supported boundary, the surface is shipped or documented for the affected actor, or the path bypasses a documented hardening or authorization boundary.

When source provenance, supported configuration, actor privileges, or boundary classification is unclear, prefer needs_review and state the exact ambiguity in proof gaps.

Verdict Rules

Apply verdict rules to the complete, specific claim: actor, source, transformations, control, sink or protected operation, supported preconditions, boundary, and consequence. Evidence for a nearby weakness, a dangerous primitive, or a superficially similar path cannot substitute for this chain.

Use confirmed only when static evidence positively establishes all of the following:

  • the cited or equivalent vulnerable condition exists
  • a shipped, deployed, or documented product path reaches it under stated, supported preconditions
  • the claimed actor can influence the relevant source before the security control that matters
  • each relevant transformation and control has been evaluated by actual semantics, including downstream reinterpretation and failure behavior
  • the claimed consequence remains possible after those controls
  • the path crosses an intended security boundary

Do not treat formatting, encoding, generic escaping, exception catching, redirecting, authentication alone, or a control's name as proof that the claimed consequence is either enabled or prevented. Determine what the operation enforces, what execution does afterward, and whether later processing changes the data's security meaning.

A source and dangerous sink are not sufficient for confirmed. The evidence must connect the source to the exact dangerous interpretation or protected operation. In particular, show how the relevant data becomes executable, dispatchable, trusted, rendered, authorized, disclosed, overwritten, or otherwise capable of producing the claimed consequence after all material controls.

Use not_actionable only when static evidence positively defeats the material claim. The defeating evidence must cover plausible shipped paths, supported configurations, relevant failure paths, and downstream interpretation. Valid defeating evidence includes:

  • the affected component, feature, condition, or version is absent
  • every plausible shipped caller makes the claimed condition unreachable
  • the relevant control rejects or neutralizes the dangerous interpretation before the protected operation on all supported paths
  • denial, exception, or failure behavior terminates or safely diverts execution before the claimed consequence, including failures propagated from callees
  • later parsing, decoding, binding, interpolation, dispatch, or rendering cannot reintroduce the dangerous interpretation
  • repository evidence establishes that the code is excluded from the affected artifact or runtime
  • source provenance is positively established as same-privilege trusted input under the supported security model, with no plausible supported path from a less-trusted actor
  • the required precondition is impossible across supported configurations, rather than merely uncommon or disabled by default

Do not use not_actionable because one caller is safe, the normal path is guarded, a value is described as local or administrative, a redirect or exception is present, a sanitizer is invoked, or an insecure mode is optional. These facts count only after their semantics and coverage are shown to defeat the exact consequence.

Use needs_review when source provenance, control semantics, downstream interpretation, failure behavior, path coverage, supported configuration, or boundary policy cannot be established statically. Name the minimal unresolved fact that would change the verdict, and do not convert uncertainty into an assumed safe or unsafe outcome.

Exploitability Stack Ranking

After verdicting, assign discrete exploitability stack ranks separately for confirmed and needs_review findings.

  • confirmed findings use the confirmed rank queue and positive integer ranks 1, 2, 3, etc. Rank 1 is the most exploitable confirmed finding in this result set.
  • needs_review findings use the needs_review rank queue and independently assign positive integer ranks starting at 1. Rank 1 is the highest-exploitability unresolved finding to review first.
  • Ranks must be unique and contiguous from 1 inside each queue. The same rank may appear once in each queue because rank_queue distinguishes confirmed priorities from needs-review priorities.
  • not_actionable findings are not stack-ranked; set their rank queue and rank to null.

Rank by exploitability, not by scanner severity alone. Prioritize findings with clearer attacker reachability, lower required privileges, fewer preconditions, more direct source-to-sink control, weaker or absent guards, and more reliable static evidence that the exploit path can be exercised. Use claimed impact or scanner severity only as a final tiebreaker when exploitability is otherwise equal.

Keep findings in input order in the JSON result. Use the stack-rank fields to show review/remediation priority instead of reordering the results.

Owner Hints

For confirmed findings only, add a concise owner hint after assigning the verdict and exploitability stack rank when local ownership evidence is easy to derive.

Prefer CODEOWNERS or OWNERS evidence when available. If ownership is not clear, omit the owner hint rather than guessing. Owner hints are routing metadata only: do not use ownership to influence verdict, confidence, boundary assessment, or exploitability rank.

The triage-finding/v0 contract does not define a dedicated owner field. Do not add undocumented fields to the structured result. Put owner-hint text in existing Markdown output, evidence, or recommended-next-step text when it is useful.

Output Contract

The Markdown result should include:

  • finding title or input id
  • verdict and confidence
  • short rationale
  • affected locations, if any
  • reachable path, if established
  • boundary assessment: product surface, source trust level, policy basis, and whether a supported security boundary is crossed
  • exploitability stack rank for confirmed and needs_review findings
  • evidence
  • counterevidence
  • proof gaps
  • owner hint for confirmed findings, when available
  • recommended next step
  • $fix-finding handoff when verdict is confirmed

When the user requests the raw JSON contract, it must include:

  • schema_version: "triage-finding/v0"
  • repository path and revision when available
  • one result object per input finding, in input order
  • source_type on every finding result, using one of the input source types listed above
  • boundary_assessment on every finding result, even when fields are unknown
  • exploitability_stack_rank on every finding result

Generate the valid triage-finding/v0 result internally, then respond with the concise Markdown summary. Include the fenced JSON block only when the user explicitly asks to see or copy the raw result contract.

Fix-Finding Handoff

For confirmed findings, include a concise prompt-ready handoff for $fix-finding with:

  • vulnerable source, sink, or broken control
  • attacker-controlled input and preconditions
  • exact code references
  • required security invariant
  • recommended fix boundary
  • proof gaps that $fix-finding should preserve or validate

Do not invoke $fix-finding unless the user explicitly asks to continue into fixing.

Hard Rules

  • Do not run tests, builds, applications, PoCs, exploit checks, or dynamic validation.
  • Do not edit repository files while triaging.
  • Do not search for unrelated vulnerabilities.
  • Do not claim exhaustive repository coverage.
  • Do not claim runtime validation happened.
  • Honor the user's explicitly selected GitHub transport, account, and repository; never silently fall back to another credential or transport.
  • Do not mutate Jira, Linear, or other backlog sources unless the user explicitly asks for writeback after triage.
  • Do not include GitHub Issues in default GitHub intake or in the all-source GitHub intake path.
  • Do not mark confirmed solely because attacker-influenced data reaches a dangerous sink; first establish the relevant product surface and supported security boundary.
  • Do not use deep triage mode unless a future implementation explicitly adds it.
  • Do not deduplicate, group, canonicalize, or drop duplicate-looking inputs in this skill; keep one result per supplied finding.
  • Do not hide proof gaps or turn missing evidence into confidence.

© vlinx-io, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (references) in src-tauri/resources/codex-security/skills/triage-finding of vlinx-io/VelaTerm.

  • SKILL.md
  • agents/openai.yaml
  • references/github-rest-intake.md
  • references/ticket-intake.md
  • references/triage-result-contract.md

Open the folder on GitHubat commit 98b5f2f

Compare with similar skills

Triage Finding next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Triage Finding compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Triage Finding this skillvlinx-io/VelaTerm275—~6.9kAutomated safety check: PassMIT
Issue Triage Loopcobusgreyling/loop-engineering11k—~522Automated safety check: PassMIT
Triagebholmesdev/hubble.md1.5k—~1.5kAutomated safety check: PassMIT
Specwarpdotdev-demos/cloud-factory-demo330—~2.1kAutomated safety check: PassMIT
Implementationbholmesdev/hubble.md1.5k—~2kAutomated safety check: PassMIT
Triagewarpdotdev-demos/cloud-factory-demo330—~2.2kAutomated safety check: PassMIT

Similar skills

  • Issue Triage Loop

    cobusgreyling/loop-engineering

    Scans open GitHub issues and discussions, flags duplicates, scores priority and proposes labels into issue-triage-state.md without ever labeling or closing.

    11k GitHub stars~522 tokensUpdated today
    DevelopmentAuto-check passed
  • Triage

    bholmesdev/hubble.md

    Triage an incoming GitHub, Jira, Linear, or other issue-tracker issue against the current codebase and related issues, then return a structured decision with exactly one triage state.

    1.5k GitHub stars~1.5k tokensUpdated 8 days ago
    DevelopmentAuto-check passed
  • Spec

    warpdotdev-demos/cloud-factory-demo

    Coordinate spec-driven development for a GitHub, Jira, Linear, or other issue-tracker issue marked ready-to-spec by using write-product-spec and write-tech-spec, creating PRODUCT.md and TECH.md…

    330 GitHub stars~2.1k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Implementation

    bholmesdev/hubble.md

    Implement a fix or feature from a GitHub, Jira, Linear, or other issue-tracker issue by fetching issue context, inspecting the current codebase, making code changes, validating them, opening a…

    1.5k GitHub stars~2k tokensUpdated 8 days ago
    DevelopmentAuto-check passed
  • Triage

    warpdotdev-demos/cloud-factory-demo

    Triage an incoming GitHub, Jira, Linear, or other issue-tracker issue against the current codebase and related open issues, then return a structured decision with exactly one…

    330 GitHub stars~2.2k tokensUpdated 1 mo ago
    Productivity & AutomationAuto-check passed
  • Mfs Find

    zilliztech/mfs

    Search, grep, browse, and read across registered MFS data sources via the mfs CLI — codebases, docs, PDFs, web crawls, databases (postgres/mysql/mongo/snowflake/bigquery), issue trackers…

    153 GitHub stars~4k tokensUpdated 2 mo ago
    DatabasesAuto-check passed

More from vlinx-io/VelaTerm

All 26 skills in this repo
  • Assess Patch Risk

    vlinx-io/VelaTerm

    Assess an immutable patch artifact's program impact, regression risk, and auto-merge eligibility.

    275 GitHub stars~2.1k tokensUpdated 2 days ago
    Auto-check passed
  • Vspawn

    vlinx-io/VelaTerm

    Explicitly spawn a standalone child session under the current vlx-term session, passing the task in as its first message (mirrors spawntask).

    275 GitHub stars~2.5k tokensUpdated 2 days ago
    Auto-check passed
  • Deep Security Scan

    vlinx-io/VelaTerm

    A skill your agent uses when the user asks for a deep, exhaustive, multi-pass, or variance-reducing repository-wide or scoped-path Codex Security scan.

    275 GitHub stars~3.3k tokensUpdated 2 days ago
    Auto-check passed
  • Define Security Policy

    vlinx-io/VelaTerm

    Define, review, or update SECURITY.md guidance for a repository or component.

    275 GitHub stars~1.5k tokensUpdated 2 days ago
    Auto-check passed
  • Track Findings

    vlinx-io/VelaTerm

    Track validated Codex Security findings in Linear, Jira, GitHub issues, or draft GitHub security advisories.

    275 GitHub stars~5.1k tokensUpdated 2 days ago
    Auto-check passed
  • Verify Fix

    vlinx-io/VelaTerm

    Use only when the user explicitly requests verification that a security fix remediates a reported vulnerability.

    275 GitHub stars~757 tokensUpdated 2 days ago
    Auto-check passed

Works with

Categories

Questions about Triage Finding

What does Triage Finding do?

A skill your agent uses when the user supplies or imports existing security findings, vulnerability reports, or security/vulnerability Jira/Linear tickets from scanners, advisories, GitHub…. Triage Finding is an agent skill from vlinx-io/VelaTerm. Use when the user supplies or imports existing security findings, vulnerability reports, or security/vulnerability Jira/Linear tickets from scanners, advisories, GitHub, Atlassian Rovo, Linear, or similar backlog sources and wants static repo-impact triage.

When should I use Triage Finding?

Triage Finding fits situations like: the user supplies; imports existing security findings; vulnerability reports; security/vulnerability Jira/Linear tickets from scanners.

How do I install Triage Finding in Claude Code?

Run `npx skills add vlinx-io/VelaTerm --skill triage-finding -a claude-code`. Or copy the skill folder (src-tauri/resources/codex-security/skills/triage-finding in vlinx-io/VelaTerm) into .claude/skills/triage-finding in your project. Claude Code loads it when a task matches its description.

How do I install Triage Finding in Codex?

Run `npx skills add vlinx-io/VelaTerm --skill triage-finding -a codex`. Or copy the skill folder (src-tauri/resources/codex-security/skills/triage-finding in vlinx-io/VelaTerm) into .agents/skills/triage-finding in your project. Codex loads it when a task matches its description.

Can I use Triage Finding in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vlinx-io/VelaTerm --skill triage-finding -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/triage-finding, .gemini/skills/triage-finding, .github/skills/triage-finding and .opencode/skills/triage-finding in your project.

What does Triage Finding need to run?

SKILL.md names no scripts, command-line tools or credentials: Triage Finding is instructions for the agent only.

Does Triage Finding access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Triage Finding safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Triage Finding use?

Triage Finding is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Triage Finding use?

About 6.9k tokens (SKILL.md is roughly 28k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5k tokens, read only when the agent opens those files.

What are the alternatives to Triage Finding?

Skills that share tags, products or a category with Triage Finding: Issue Triage Loop (cobusgreyling/loop-engineering, 11k stars), Triage (bholmesdev/hubble.md, 1.5k stars), Spec (warpdotdev-demos/cloud-factory-demo, 330 stars) and Implementation (bholmesdev/hubble.md, 1.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Triage Finding?

vlinx-io (a GitHub user) maintains it in vlinx-io/VelaTerm, which has 275 GitHub stars. The repository holds 26 skills in this directory. The repository was last updated on October 7, 2026.

Source: vlinx-io/VelaTerm on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.