Quality Gates logo

Quality Gates

Community
yonatangross
quality-gates

Use when assessing task complexity, before starting complex tasks, when stuck after multiple attempts, or reviewing code against best practices. Provides quality-gates scoring (1-5), escalation workflows, and pattern library management.

Overview

Publisheryonatangross
Repositoryorchestkit
Skill namequality-gates
Stars
298
Forks
35
Bundled files
11
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 11 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by yonatangross on GitHub. Read the source before you install it.

Installation

Install the Quality Gates AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/yonatangross/orchestkit/tree/main/plugins/ork/skills/quality-gates
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/yonatangross/orchestkit.git /tmp/orchestkit
mkdir -p .claude/skills
cp -r /tmp/orchestkit/plugins/ork/skills/quality-gates .claude/skills/quality-gates
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Quality Gates in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Quality Gates on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Quality Gates is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Quality Gates

This skill teaches agents how to assess task complexity, enforce quality gates, and prevent wasted work on incomplete or poorly-defined tasks.

Key Principle: Stop and clarify before proceeding with incomplete information. Better to ask questions than to waste cycles on the wrong solution.


Overview

Auto-Activate Triggers

  • Receiving a new task assignment
  • Starting a complex feature implementation
  • Before allocating work in Squad mode
  • When requirements seem unclear or incomplete
  • After 3 failed attempts at the same task
  • When blocked by dependencies

Manual Activation

  • User asks for complexity assessment
  • Planning a multi-step project
  • Before committing to a timeline

Core Concepts

Complexity Scoring (1-5 Scale)

LevelFilesLinesTimeCharacteristics
1 - Trivial1< 50< 30 minNo deps, no unknowns
2 - Simple1-350-20030 min - 2 hr0-1 deps, minimal unknowns
3 - Moderate3-10200-5002-8 hr2-3 deps, some unknowns
4 - Complex10-25500-15008-24 hr4-6 deps, significant unknowns
5 - Very Complex25+1500+24+ hr7+ deps, many unknowns

The table above is the canonical rubric. Score with max(file_count, LOC, dependency_count, unknowns), not an average: one Level 5 axis makes the task Level 5. Run scripts/assess-complexity.md or scripts/analyze-codebase.sh <target> to measure the inputs.

Blocking Thresholds

ConditionThresholdAction
YAGNI GateJustified ratio > 2.0BLOCK with simpler alternatives
YAGNI WarningJustified ratio 1.5-2.0WARN with simpler alternatives
Critical Questions> 3 unansweredBLOCK
Missing DependenciesAny blockingBLOCK
Failed Attempts>= 3BLOCK & ESCALATE
Evidence Failure2 fix attemptsBLOCK
Complexity OverflowLevel 4-5 no planBLOCK

WARNING Conditions (proceed with caution):

  • Level 3 complexity
  • 1-2 unanswered questions
  • 1-2 failed attempts

The escalation protocol and gate decision logic are both in "Quick Reference" below. The YAGNI ratio, tier LOC budgets, and simpler-alternative surfacing live in rules/yagni-gate.md.


References

Load on demand with Read("references/<file>"):

FileContent
ork-delta.mdOrchestKit-specific scars and house decisions: line-counting correctness, fail-open policy, gate self-monitoring, non-bypassable categories
unified-scoring-framework.mdCanonical 0-10 dimensions, weights, grade thresholds, improvement prioritization. Also loaded by ork:assess and ork:verify

Upstream coverage (do not restate)

This skill wraps generic quality-gate practice and keeps only the OrchestKit delta. When one of these topics comes up, go to the source instead of re-teaching it here.

TopicSource
Complexity 1-5 rubric, per-level examples, assessment formula"Complexity Scoring" table above, canonical
BLOCKING vs WARNING conditions, escalation protocol, attempt tracking"Blocking Thresholds" and "Quick Reference" above, canonical
YAGNI ratio, project tier LOC budgets, simpler alternativesrules/yagni-gate.md + ork:scope-appropriate-architecture
Score dimensions, weights, grade thresholdsreferences/unified-scoring-framework.md
LLM-as-judge, G-Eval, aspect scoring, metric APIsork:testing-llm
Requirements completeness, acceptance criteria templatesork:write-prd
Test standards enforced as part of a gateork:architecture-patterns
Repo metrics for a gate input (files, LOC, tests, churn)scripts/analyze-codebase.sh in this skill
LangGraph conditional routing for a gate nodehttps://langchain-ai.github.io/langgraph/
FastAPI error responses for a failed gatehttps://fastapi.tiangolo.com/tutorial/handling-errors/
Pydantic validators for gate output schemashttps://docs.pydantic.dev/latest/concepts/validators/
Retry with exponential backoff, SLO-based alerting on gateshttps://sre.google/workbook/alerting-on-slos/

Quick Reference

Gate Decision Flow

0. YAGNI check (runs FIRST — before any implementation planning)
   → Read project tier from scope-appropriate-architecture
   → Calculate justified_complexity = planned_LOC / tier_appropriate_LOC
   → If ratio > 2.0: BLOCK (must simplify)
   → If ratio 1.5-2.0: WARN (present simpler alternative)
   → Security patterns exempt from YAGNI gate

1. Assess complexity (1-5)
2. Count critical questions unanswered
3. Check dependencies blocked
4. Check attempt count

if (yagni_ratio > 2.0) -> BLOCK with simpler alternatives
else if (questions > 3 || deps blocked || attempts >= 3) -> BLOCK
else if (complexity >= 4 && no plan) -> BLOCK
else if (yagni_ratio > 1.5 || complexity == 3 || questions 1-2) -> WARNING
else -> PASS

Gate Check Template

markdown
## Quality Gate: [Task Name]

**Complexity:** Level [1-5]
**Unanswered Critical Questions:** [Count]
**Blocked Dependencies:** [List or None]
**Failed Attempts:** [Count]

**Status:** PASS / WARNING / BLOCKED
**Can Proceed:** Yes / No

Escalation Template

markdown
## Escalation: Task Blocked

**Task:** [Description]
**Block Type:** [Critical Questions / Dependencies / Stuck / Evidence]
**Attempts:** [Count]

### What Was Tried
1. [Approach 1] - Failed: [Reason]
2. [Approach 2] - Failed: [Reason]

### Need Guidance On
- [Specific question]

**Recommendation:** [Suggested action]

Integration with Context System

javascript
// Add gate check to context
context.quality_gates = context.quality_gates || [];
context.quality_gates.push({
  task_id: taskId,
  timestamp: new Date().toISOString(),
  complexity_score: 3,
  gate_status: 'pass', // pass, warning, blocked
  critical_questions_count: 1,
  unanswered_questions: 1,
  dependencies_blocked: 0,
  attempt_count: 0,
  can_proceed: true
});

Integration with Evidence System

javascript
// Before marking task complete
const evidence = context.quality_evidence;
const hasPassingEvidence = (
  evidence?.tests?.exit_code === 0 ||
  evidence?.build?.exit_code === 0
);

if (!hasPassingEvidence) {
  return { gate_status: 'blocked', reason: 'no_passing_evidence' };
}

Best Practices Pattern Library

Track success/failure patterns across projects to prevent repeating mistakes and proactively warn during code reviews.

RuleFileKey Pattern
YAGNI Gaterules/yagni-gate.mdPre-implementation scope check, justified complexity ratio, simpler alternatives
Pattern Libraryrules/practices-code-standards.mdSuccess/failure tracking, confidence scoring, memory integration
Review Checklistrules/practices-review-checklist.mdCategory-based review, proactive anti-pattern detection

Pattern Confidence Levels

LevelMeaningAction
Strong success3+ projects, 100% successAlways recommend
Mixed resultsBoth successes and failuresContext-dependent
Strong anti-pattern3+ projects, all failedBlock with explanation

Common Pitfalls

PitfallProblemSolution
Skip gates for "simple" tasksGet stuck laterAlways run gate check
Ignore WARNING statusUndocumented assumptions cause issuesDocument every assumption
Not tracking attemptsWaste cycles on same approachTrack every attempt, escalate at 3
Proceed when BLOCKEDBuild wrong solutionNEVER bypass BLOCKED gates


Related Skills

  • ork:scope-appropriate-architecture - Project tier detection that feeds YAGNI gate
  • ork:architecture-patterns - Enforce testing standards as part of quality gates
  • ork:testing-llm - LLM-as-judge patterns for quality validation (DeepEval, RAGAS)
  • ork:golden-dataset - Validate datasets meet quality thresholds

Key Decisions

DecisionChoiceRationale
Complexity Scale1-5 levelsGranular enough for estimation, simple enough for quick assessment
Block Threshold3 critical questionsPrevents proceeding with too many unknowns
Escalation Trigger3 failed attemptsBalances persistence with avoiding wasted cycles
Level 4-5 RequirementPlan requiredComplex tasks need upfront decomposition

Capability Details

complexity-scoring

Keywords: complexity, score, difficulty, estimate, sizing, 1-5 scale Solves: How complex is this task? Score task complexity on 1-5 scale, assess implementation difficulty

blocking-thresholds

Keywords: blocking, threshold, gate, stop, escalate, cannot proceed Solves: When should I block progress? >3 critical questions = BLOCK, Missing dependencies = BLOCK

critical-questions

Keywords: critical questions, unanswered, unknowns, clarify Solves: What are critical questions? Count unanswered, block if >3

stuck-detection

Keywords: stuck, failed attempts, retry, 3 attempts, escalate Solves: How do I detect when stuck? After 3 failed attempts, escalate

gate-validation

Keywords: validate, gate check, pass, fail, gate status Solves: How do I validate quality gates? Run pre-task gate validation

pre-task-gate-check

Keywords: pre-task, before starting, can proceed Solves: How do I check gates before starting? Assess complexity, identify blockers

complexity-breakdown

Keywords: breakdown, decompose, subtasks, split task Solves: How do I break down complex tasks? Split Level 4-5 into Level 1-3 subtasks

requirements-completeness

Keywords: requirements, incomplete, acceptance criteria Solves: Gate check only: is the requirement set complete enough to start? Authoring the requirements themselves belongs to ork:write-prd (see Upstream coverage)

escalation-protocol

Keywords: escalate, ask user, need help, human guidance Solves: When and how to escalate? Escalate after 3 failed attempts

llm-as-judge

Keywords: llm as judge, g-eval, aspect scoring, quality validation Solves: Gate thresholds only: what score must a judge return to pass? Building and running the judge belongs to ork:testing-llm (see Upstream coverage)

yagni-gate

Keywords: yagni, over-engineering, justified complexity, scope check, too complex, simplify Solves: Is this complexity justified? Calculate justified_complexity ratio against project tier, BLOCK if > 2.0, surface simpler alternatives

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Quality Gates AI skill do?

Use when assessing task complexity, before starting complex tasks, when stuck after multiple attempts, or reviewing code against best practices. Provides quality-gates scoring (1-5), escalation workflows, and pattern library management.

Why use Quality Gates on TypingMind?

Because you install it once and use it with any model. Quality Gates is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Quality Gates in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/yonatangross/orchestkit/tree/main/plugins/ork/skills/quality-gates. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Quality Gates?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Quality Gates?

As many as you like. As long as a model supports skills, you can use Quality Gates with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Quality Gates AI skill free?

Yes. It is published on GitHub by yonatangross under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇