Feature Planner
serendipity1004/cc-feature-implementer
Creates phase-based feature plans with quality gates and incremental delivery structure.
A skill your agent uses when assessing task complexity, before starting complex tasks, when stuck after multiple attempts, or reviewing code against best practices.
$ npx skills add yonatangross/orchestkit --skill quality-gates -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install yonatangross/orchestkit quality-gates --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/quality-gates .claude/skills/quality-gates && rm -rf skills-srcUse ~/.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/
Install the "quality-gates" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/quality-gates into .claude/skills/quality-gates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quality-gates", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/yonatangross/orchestkit/tree/main/src/skills/quality-gatesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add yonatangross/orchestkit --skill quality-gates -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install yonatangross/orchestkit quality-gates --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/skills/quality-gates .agents/skills/quality-gates && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "quality-gates" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/quality-gates into .agents/skills/quality-gates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quality-gates", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add yonatangross/orchestkit --skill quality-gates -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install yonatangross/orchestkit quality-gates --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/skills/quality-gates .cursor/skills/quality-gates && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "quality-gates" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/quality-gates into .cursor/skills/quality-gates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quality-gates", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/yonatangross/orchestkit.git --path src/skills/quality-gates--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add yonatangross/orchestkit --skill quality-gates -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install yonatangross/orchestkit quality-gates --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/skills/quality-gates .gemini/skills/quality-gates && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "quality-gates" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/quality-gates into .gemini/skills/quality-gates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quality-gates", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install yonatangross/orchestkit quality-gatesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add yonatangross/orchestkit --skill quality-gates -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/skills/quality-gates .github/skills/quality-gates && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "quality-gates" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/quality-gates into .github/skills/quality-gates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quality-gates", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add yonatangross/orchestkit --skill quality-gates -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install yonatangross/orchestkit quality-gates --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/skills/quality-gates .opencode/skills/quality-gates && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "quality-gates" agent skill from https://github.com/yonatangross/orchestkit/tree/main/src/skills/quality-gates into .opencode/skills/quality-gates/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "quality-gates", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
quality-gatesA skill your agent uses when assessing task complexity, before starting complex tasks, when stuck after multiple attempts, or reviewing code against best practices.
Quality Gates is an agent skill from yonatangross/orchestkit. 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.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 14 other files, including scripts and reference files (for example `references/ork-delta.md`, `references/unified-scoring-framework.md` and `rules/_sections.md`). Compatibility notes: Claude Code 2.1.277+.
It sits in Testing & QA, covering Quality gates. The repository describes itself as: The Complete AI Development Toolkit for Claude Code. 106 skills, 36 agents, 171 hooks. Install ork for stable (v9.x), or ork-alpha for the v10 line, which ships daily. The licence is MIT.
Read from SKILL.md and the folder at commit 02bbf9a. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadGlobGrepWebFetchWebSearchFrom allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Shell and Python), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
langchain-ai.github.iofastapi.tiangolo.comdocs.pydantic.devsre.googleFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Claude Code 2.1.277+.
From compatibility in the SKILL.md frontmatter.
Quality Gates loads about 2.9k tokens when it runs, and up to ~5.3k if it reads all its reference files. Until then it costs about 63 tokens; SKILL.md has 958 words of instructions outside code blocks.
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.
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); the scripts in this folder are not scanned.
The full file from yonatangross/orchestkit at commit 02bbf9a, republished under its MIT licence (© yonatangross). 958 words, ~2,904 tokens.
.claude/skills/quality-gates/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.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.
| Level | Files | Lines | Time | Characteristics |
|---|---|---|---|---|
| 1 - Trivial | 1 | < 50 | < 30 min | No deps, no unknowns |
| 2 - Simple | 1-3 | 50-200 | 30 min - 2 hr | 0-1 deps, minimal unknowns |
| 3 - Moderate | 3-10 | 200-500 | 2-8 hr | 2-3 deps, some unknowns |
| 4 - Complex | 10-25 | 500-1500 | 8-24 hr | 4-6 deps, significant unknowns |
| 5 - Very Complex | 25+ | 1500+ | 24+ hr | 7+ 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.
| Condition | Threshold | Action |
|---|---|---|
| YAGNI Gate | Justified ratio > 2.0 | BLOCK with simpler alternatives |
| YAGNI Warning | Justified ratio 1.5-2.0 | WARN with simpler alternatives |
| Critical Questions | > 3 unanswered | BLOCK |
| Missing Dependencies | Any blocking | BLOCK |
| Failed Attempts | >= 3 | BLOCK & ESCALATE |
| Evidence Failure | 2 fix attempts | BLOCK |
| Complexity Overflow | Level 4-5 no plan | BLOCK |
WARNING Conditions (proceed with caution):
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.
Load on demand with Read("references/<file>"):
| File | Content |
|---|---|
ork-delta.md | OrchestKit-specific scars and house decisions: line-counting correctness, fail-open policy, gate self-monitoring, non-bypassable categories |
unified-scoring-framework.md | Canonical 0-10 dimensions, weights, grade thresholds, improvement prioritization. Also loaded by ork:assess and ork:verify |
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.
| Topic | Source |
|---|---|
| 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 alternatives | rules/yagni-gate.md + ork:scope-appropriate-architecture |
| Score dimensions, weights, grade thresholds | references/unified-scoring-framework.md |
| LLM-as-judge, G-Eval, aspect scoring, metric APIs | ork:testing-llm |
| Requirements completeness, acceptance criteria templates | ork:write-prd |
| Test standards enforced as part of a gate | ork: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 node | https://langchain-ai.github.io/langgraph/ |
| FastAPI error responses for a failed gate | https://fastapi.tiangolo.com/tutorial/handling-errors/ |
| Pydantic validators for gate output schemas | https://docs.pydantic.dev/latest/concepts/validators/ |
| Retry with exponential backoff, SLO-based alerting on gates | https://sre.google/workbook/alerting-on-slos/ |
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## 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: 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]// 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
});// 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' };
}Track success/failure patterns across projects to prevent repeating mistakes and proactively warn during code reviews.
| Rule | File | Key Pattern |
|---|---|---|
| YAGNI Gate | rules/yagni-gate.md | Pre-implementation scope check, justified complexity ratio, simpler alternatives |
| Pattern Library | rules/practices-code-standards.md | Success/failure tracking, confidence scoring, memory integration |
| Review Checklist | rules/practices-review-checklist.md | Category-based review, proactive anti-pattern detection |
| Level | Meaning | Action |
|---|---|---|
| Strong success | 3+ projects, 100% success | Always recommend |
| Mixed results | Both successes and failures | Context-dependent |
| Strong anti-pattern | 3+ projects, all failed | Block with explanation |
| Pitfall | Problem | Solution |
|---|---|---|
| Skip gates for "simple" tasks | Get stuck later | Always run gate check |
| Ignore WARNING status | Undocumented assumptions cause issues | Document every assumption |
| Not tracking attempts | Waste cycles on same approach | Track every attempt, escalate at 3 |
| Proceed when BLOCKED | Build wrong solution | NEVER bypass BLOCKED gates |
ork:scope-appropriate-architecture - Project tier detection that feeds YAGNI gateork:architecture-patterns - Enforce testing standards as part of quality gatesork:testing-llm - LLM-as-judge patterns for quality validation (DeepEval, RAGAS)ork:golden-dataset - Validate datasets meet quality thresholds| Decision | Choice | Rationale |
|---|---|---|
| Complexity Scale | 1-5 levels | Granular enough for estimation, simple enough for quick assessment |
| Block Threshold | 3 critical questions | Prevents proceeding with too many unknowns |
| Escalation Trigger | 3 failed attempts | Balances persistence with avoiding wasted cycles |
| Level 4-5 Requirement | Plan required | Complex tasks need upfront decomposition |
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
Keywords: blocking, threshold, gate, stop, escalate, cannot proceed Solves: When should I block progress? >3 critical questions = BLOCK, Missing dependencies = BLOCK
Keywords: critical questions, unanswered, unknowns, clarify Solves: What are critical questions? Count unanswered, block if >3
Keywords: stuck, failed attempts, retry, 3 attempts, escalate Solves: How do I detect when stuck? After 3 failed attempts, escalate
Keywords: validate, gate check, pass, fail, gate status Solves: How do I validate quality gates? Run pre-task gate validation
Keywords: pre-task, before starting, can proceed Solves: How do I check gates before starting? Assess complexity, identify blockers
Keywords: breakdown, decompose, subtasks, split task Solves: How do I break down complex tasks? Split Level 4-5 into Level 1-3 subtasks
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)
Keywords: escalate, ask user, need help, human guidance Solves: When and how to escalate? Escalate after 3 failed attempts
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)
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
© yonatangross, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 11 other files (scripts, references) in src/skills/quality-gates of yonatangross/orchestkit.
Open the folder on GitHubat commit 02bbf9a
Quality Gates 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Quality Gates this skillyonatangross/orchestkit | 290 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Feature Plannerserendipity1004/cc-feature-implementer | 176 | — | ~2.4k | Automated safety check: Pass | None | |
| Ccg Workflowfengshao1227/ccg-workflow | 5.9k | — | ~2.3k | Automated safety check: Pass | MIT | |
| Conducty Checkpointrobertbarclayy/conducty | 176 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Mission Plannerjdforsythe/forge | 151 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Quality Gate0xNyk/lacp | 305 | — | ~382 | Automated safety check: Pass | MIT |
serendipity1004/cc-feature-implementer
Creates phase-based feature plans with quality gates and incremental delivery structure.
fengshao1227/ccg-workflow
How to run a non-trivial change end to end with the CCG role tools (ccganalyze / ccgdesign / ccgbuild / ccgdebug / ccgoptimize / ccgreview / ccgtest) and the verify- quality gates.
robertbarclayy/conducty
Quality gate between parallelization groups. An agent skill from robertbarclayy/conducty.
jdforsythe/forge
Decomposes goals into team blueprints using evidence-based scaling laws, topology selection, and role design.
0xNyk/lacp
Production quality gate for agent sessions. An agent skill from 0xNyk/lacp.
nwiizo/ccswarm
Release deployment process for ccswarm. An agent skill from nwiizo/ccswarm.
yonatangross/orchestkit
API contract design for REST and GraphQL, covering resource shape, URL and header versioning with deprecation windows, RFC 9457 Problem Details error handling, and OpenAPI specs.
yonatangross/orchestkit
ADR templates in the Nygard format with context, decision, consequences, and alternatives.
yonatangross/orchestkit
Single-pass codebase analysis leveraging a 1M-token context window for comprehensive security scanning, architecture review, and dependency auditing.
yonatangross/orchestkit
Structured review processes, conventional comments, language-specific checklists, and feedback templates.
yonatangross/orchestkit
Creates GitHub pull requests with pre-flight validation, conventional title formatting, and structured summary generation.
yonatangross/orchestkit
Multi-angle codebase exploration spawning 3-5 parallel agents for code structure, data flow, architecture patterns, and health assessment.
Categories
A skill your agent uses when assessing task complexity, before starting complex tasks, when stuck after multiple attempts, or reviewing code against best practices. Quality Gates is an agent skill from yonatangross/orchestkit. Use when assessing task complexity, before starting complex tasks, when stuck after multiple attempts, or reviewing code against best practices.
Quality Gates fits situations like: assessing task complexity; before starting complex tasks; stuck after multiple attempts; reviewing code against best practices.
Run `npx skills add yonatangross/orchestkit --skill quality-gates -a claude-code`. Or copy the skill folder (src/skills/quality-gates in yonatangross/orchestkit) into .claude/skills/quality-gates in your project. Claude Code loads it when a task matches its description.
Run `npx skills add yonatangross/orchestkit --skill quality-gates -a codex`. Or copy the skill folder (src/skills/quality-gates in yonatangross/orchestkit) into .agents/skills/quality-gates in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yonatangross/orchestkit --skill quality-gates -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/quality-gates, .gemini/skills/quality-gates, .github/skills/quality-gates and .opencode/skills/quality-gates in your project.
Going by SKILL.md and its folder, Quality Gates needs a shell and Python for the scripts in its folder. Our summary lists: Python 3; A Bash shell. Its frontmatter pre-approves these tools: Read, Glob, Grep, WebFetch, WebSearch. Compatibility (from SKILL.md): Claude Code 2.1.277+..
SKILL.md names 4 domains. As links in the text: langchain-ai.github.io, fastapi.tiangolo.com, docs.pydantic.dev and sre.google. This is read from the text; nothing was executed.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Quality Gates is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k 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 2.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Quality Gates: Feature Planner (serendipity1004/cc-feature-implementer, 176 stars), Ccg Workflow (fengshao1227/ccg-workflow, 5.9k stars), Conducty Checkpoint (robertbarclayy/conducty, 176 stars) and Mission Planner (jdforsythe/forge, 151 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
yonatangross (a GitHub user) maintains it in yonatangross/orchestkit, which has 290 GitHub stars. The repository holds 108 skills in this directory. The repository was last updated on October 9, 2026.
Source: yonatangross/orchestkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.