Official agent skill

Code Engine Specialist

by IBM in IBM/CodeEngine

Deploys, configures, and troubleshoots IBM Cloud Code Engine workloads using the ibmcloud ce CLI.

OfficialApache-2.0Auto-check passedBackend & APIs

Install Code Engine Specialist

skills CLI
$ npx skills add IBM/CodeEngine --skill code-engine-specialist -a claude-code

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

GitHub CLI
$ gh skill install IBM/CodeEngine code-engine-specialist --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/IBM/CodeEngine.git skills-src && mkdir -p .claude/skills && cp -r skills-src/ai/skills/code-engine-specialist .claude/skills/code-engine-specialist && 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
code-engine-specialist
GitHub stars
117
Token cost
~3.4k tokens
SKILL.md length
1,326 words
Files
4 (incl. references)
Skills in repo
1
Repo updated
First seen
Licence
Apache-2.0

At a glance

Deploys, configures, and troubleshoots IBM Cloud Code Engine workloads using the ibmcloud ce CLI.

  • Works in 8 steps: Authentication Check (ALWAYS FIRST) → Source Code Analysis (ALWAYS SECOND) → Deployment Planning (ALWAYS THIRD) → …
  • The user mentions Code Engine deployments
  • SKILL.md covers Phase 0: Authentication Check…, Phase 1: Source Code Analysis…, Phase 2: Deployment Planning… and Phase 3: Interactive Planning, plus 9 more sections
  • Needs APPID_SECRET

What it does

Code Engine Specialist is an agent skill from IBM/CodeEngine, published by the product's own GitHub organization. Deploys, configures, and troubleshoots IBM Cloud Code Engine workloads using the ibmcloud ce CLI. Analyzes source code to choose between app (HTTP) and job (batch) deployment, detects required secrets and environment variables, selects scaling parameters, and diagnoses failures across builds, revisions, and event-driven workloads. Use when the user mentions Code Engine deployments, ibmcloud ce commands, container scaling, cold starts, batch jobs, or any Code Engine operational issue.

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `references/cli-reference.md`, `references/patterns.md` and `references/troubleshooting.md`).

It sits in Backend & APIs, covering Deployment, Event-driven systems and Background jobs. It works with Docker. The repository describes itself as: Samples for using Code Engine. The licence is Apache-2.0.

When your agent uses it

  • The user mentions Code Engine deployments
  • Ibmcloud ce commands
  • Container scaling
  • Any Code Engine operational issue

Example prompts

  • “/code-engine-specialist”

Requirements

  • Node.js
  • A credential in APPID_SECRET

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Authentication Check (ALWAYS FIRST)
  2. Source Code Analysis (ALWAYS SECOND)
  3. Deployment Planning (ALWAYS THIRD)
  4. Interactive Planning
  5. Prerequisites Verification
  6. Deployment Execution
  7. Post-Deployment Verification
  8. Next steps and securing application endpoints (ALWAYS LAST)

What it can do on your machine

Read from SKILL.md and the folder at commit 215b721. 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 (its code samples are javascript).

    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 these keys or tokens, usually read from environment variables:

    • APPID_SECRET

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

Context cost

Code Engine Specialist loads about 3.4k tokens when it runs, and up to ~9.9k if it reads all its reference files. Until then it costs about 128 tokens; SKILL.md has 1,326 words of instructions outside code blocks.

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

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 IBM/CodeEngine at commit 215b721, republished under its Apache-2.0 licence (© IBM). 1,326 words, ~3,389 tokens.

Download SKILL.mdSave it as .claude/skills/code-engine-specialist/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
code-engine-specialist
description
Deploys, configures, and troubleshoots IBM Cloud Code Engine workloads using the ibmcloud ce CLI. Analyzes source code to choose between app (HTTP) and job (batch) deployment, detects required secrets and environment variables, selects scaling parameters, and diagnoses failures across builds, revisions, and event-driven workloads. Use when the user mentions Code Engine deployments, ibmcloud ce commands, container scaling, cold starts, batch jobs, or any Code Engine operational issue.

MANDATORY WORKFLOW - FOLLOW IN ORDER

Phase 0: Authentication Check (ALWAYS FIRST)

NEVER skip this step. Many Code Engine problems are authentication issues.

  1. Check authentication: ibmcloud target
  2. If not authenticated, ask user to configure IBM Cloud CLI and authenticate with:
    • ibmcloud login --sso (for SSO authentication)
    • ibmcloud login --apikey <your-api-key> (for API key authentication)
  3. Verify success before proceeding

Success output:

🔐 Authentication Status Check
---
✅ Authenticated as: user@example.com
    Account: Account Name (id...)
    Region: us-south
    Resource Group: Default
Ready to proceed!

Failure output:

❌ Not authenticated to IBM Cloud

Please authenticate using one of these methods:
• SSO: ibmcloud login --sso
• API Key: ibmcloud login --apikey <your-api-key>

After authentication, run your command again.

Phase 1: Source Code Analysis (ALWAYS SECOND)

Extract deployment context from local source code.

  1. List project files: ls -la and find key files
  2. Read and analyze key files:
    • package.json → nodejs, npm, framework, port
    • requirements.txt → python, pip, flask, django, fastapi
    • Dockerfile → dockerfile, custom-build, container, port
    • pom.xml → java, maven, spring-boot
    • go.mod → golang, go
    • .env.example → environment-variables, secrets
    • config.yaml → environment variables, configmap
    • config.json → environment variables, configmap
  3. Extract deployment keywords for documentation search

Output format:

📁 Analyzing Your Project
---
Found key files:
  ✓ package.json (Node.js application)
  ✓ Dockerfile (Custom container build)

Detected technologies:
  • Runtime: Node.js 18.x
  • Framework: Express.js
  • Port: 3000

Deployment Keywords:
  → nodejs, express, dockerfile, environment-variables, port-configuration

Phase 2: Deployment Planning (ALWAYS THIRD)

Based on source code analysis, formulate deployment recommendations.

  1. Determine workload type (Application vs Job)
  2. Check for Dockerfile (create if missing using language-specific examples)
  3. Identify configuration needs (secrets, configmaps)
  4. Recommend resource allocation based on detected technologies
  5. Always put all secrets, clientIds, authentication credentials, etc. into a Code Engine secret

Output format:

🎯 Deployment Recommendations
---
Based on analysis, I recommend:
✓ Deploy as Application (HTTP service on port 3000)
✓ Use Dockerfile strategy (Node.js detected)
✓ Create Dockerfile if not present (see Pattern 1 for Node.js example)
✓ Create secrets for database credentials
✓ Resource allocation: 0.5 vCPU, 1G memory
✓ Store secrets in a Code Engine secret

Phase 3: Interactive Planning

Guide user through deployment decisions with clear options.

Decision points:

  1. Workload Type: Application (HTTP) vs Job (batch)
  2. Dockerfile: Present or needs creation
  3. Secrets Configuration: Create now vs manual vs skip
  4. Traffic Pattern: Low/Medium/High/Very High/Variable
  5. Resource Configuration: Light/Medium/Heavy/Custom

Traffic pattern mapping:

  • Low (< 100 req/day): min=0, max=5, cpu=0.25, mem=0.5G
  • Medium (100-10K req/day): min=1, max=10, cpu=0.5, mem=1G
  • High (10K-100K req/day): min=2, max=25, cpu=1, mem=2G
  • Very High (> 100K req/day): min=5, max=50, cpu=2, mem=4G
  • Variable: min=1, max=20, cpu=0.5, mem=1G

Always choose the Medium option by default and await user confirmation before proceeding.

Phase 4: Prerequisites Verification

Verify all prerequisites before deployment:

  • IBM Cloud CLI installed
  • Code Engine plugin installed
  • Authenticated to IBM Cloud
  • Target region set
  • Resource group selected
  • Code Engine project selected or created

Phase 5: Deployment Execution

CRITICAL: Always validate resource configuration before deployment!

Resource Validation Rules

Valid CPU values: 0.125, 0.25, 0.5, 1, 2, 4, 8 Valid Memory values: 0.25G, 0.5G, 1G, 2G, 4G, 8G, 16G, 32G CPU:Memory ratio: Must be between 2x, 4x or 8x Min scale: 0 to 250 Max scale: 1 to 250 (must be >= min scale) Concurrency: 1 to 1000

Validation output:

🔍 Validating Resource Configuration
---
Checking CPU value...
✅ 0.5 vCPU is valid

Checking memory value...
✅ 1G is valid

Checking CPU:Memory ratio...
✅ Ratio is 1:2 (within 2x, 4x or 8x range)

Configuration validated successfully!

If validation fails, offer corrected values and await user choice.

Deployment steps:

  1. Display validation results
  2. Execute deployment command
  3. Monitor build progress
  4. Configure secrets if needed
  5. Verify deployment success

Phase 6: Post-Deployment Verification

Verify deployment health and offer next steps:

  1. Test application endpoint (if applicable)
  2. Check application status
  3. Verify revision is ready
  4. Check logs for errors

Offer next steps:

  • View application logs
  • Configure custom domain
  • Set up auto-scaling rules
  • Add more environment variables
  • Deploy another service
  • Always suggest next steps and securing application endpoints (see Phase 7)

Phase 7: Next steps and securing application endpoints (ALWAYS LAST)

IMPORTANT: Always after successful deployment, suggest next steps including security options to protect the application endpoint:

Security Options:

  1. OAuth 2.0 / OpenID Connect

    • Implement OAuth flow for delegated authorization
    • Use standard libraries for your runtime (passport.js for Node, authlib for Python)
    • Validate tokens on each request
  2. Username/Password Authentication

    • Implement basic authentication with secure password hashing (bcrypt, argon2)
    • Store credentials in Code Engine secrets
    • Use HTTPS only (Code Engine provides this by default)
  3. IBM Cloud App ID

    • Managed authentication service with multiple identity providers
    • Supports social login (Google, Facebook), enterprise (SAML, OIDC)
    • Easy integration with Code Engine applications
    • Setup: Create App ID instance → Configure identity providers → Add SDK to application
  4. API Keys

    • Generate unique API keys for each client
    • Store keys in Code Engine secrets
    • Validate keys in middleware/interceptors
    • Implement rate limiting per key

Implementation Example (Node.js with App ID):

javascript
const express = require('express');
const passport = require('passport');
const WebAppStrategy = require('ibmcloud-appid').WebAppStrategy;

const app = express();

passport.use(new WebAppStrategy({
  tenantId: process.env.APPID_TENANT_ID,
  clientId: process.env.APPID_CLIENT_ID,
  secret: process.env.APPID_SECRET,
  oauthServerUrl: process.env.APPID_OAUTH_SERVER_URL,
  redirectUri: process.env.APPID_REDIRECT_URI
}));

app.use(passport.initialize());
app.use(passport.session());

// Protected route
app.get('/api/protected',
  passport.authenticate(WebAppStrategy.STRATEGY_NAME),
  (req, res) => {
    res.json({ message: 'Access granted', user: req.user });
  }
);

Recommendation:

  • For public APIs: Use OAuth 2.0 or API Keys
  • For web applications: Use IBM Cloud App ID or OAuth 2.0
  • For internal services: Use mTLS or API Keys
  • Always use HTTPS (provided by Code Engine)
  • Store all credentials in Code Engine secrets

TROUBLESHOOTING

When a deployment fails, an app crashes, a job exits with an error, or the user reports unexpected behaviour, read references/troubleshooting.md before attempting any fix.

Use it as follows:

  • Deployment fails or app never becomes ready → Common Issues section (Issues 1–8) — match symptoms (exec format error, port mismatch, OOMKilled, cold starts, missing env vars, multi-service order, health check failures, scaling issues) to get the exact detection commands and fix.
  • App crashes, job fails, build fails, scaling is wrong, revision stuck, env vars missing → Diagnostic Patterns section (Patterns 1–7) — each pattern lists investigation steps and common causes.
  • Any failure without an obvious cause → Quick Troubleshooting Workflow (6-step checklist) — always run this first to gather facts before diving deeper.

Always report which issue or pattern matched, show the detection output to the user, and confirm the fix before executing it.

Show full SKILL.md (506 more words)Show less

COMMUNICATION STYLE

Core Principles

  • Interactive: Always present options and await confirmation
  • Visual Clarity: Use emojis, separators, formatting
  • Contextual: Explain why each step matters
  • Progressive: Show real-time progress during operations

Formatting Guidelines

  • Section headers: 🔐 Section Title
  • Separators: ---
  • Status indicators: ✅ ❌ ⚠️ 💡 🎯 ⏳
  • Numbered options: 1. 2. 3.
  • Bullet lists: • item

Interaction Patterns

Present and await:

[Present information or options]

[Ask clear question]

Await user response

Explain then execute:

I'm going to [action] by running:
[command]

This will [explanation]

[Execute and report results]

Progress updates:

Step X/Y: [Action]
Running: [command]
⏳ [Status message]
✓ [Completion message]

Error Communication

Always explain errors clearly with specific solutions:

❌ Invalid Resource Configuration

Issues found:
✗ CPU value 0.3 is not valid
  Valid options: 0.125, 0.25, 0.5, 1, 2, 4, 8

Suggested corrections:
→ Use 0.25 vCPU with 1G memory
→ Or use 0.5 vCPU with 2G memory

Would you like me to use one of these?

Success Communication

Celebrate successes and provide next steps:

🎉 Deployment Successful!

Application URL: https://app.region.codeengine.appdomain.cloud
Status: Ready
Instances: 1/10 (min/max)

Next steps:
1. Test your application
2. View logs
3. Monitor status

DEPLOYMENT PATTERNS

Read references/patterns.md during Phase 2 (Deployment Planning) and Phase 5 (Deployment Execution) to select the right pattern and copy the exact commands.

Which pattern to use — decide in Phase 2:

  • No pre-built image, source code available → Pattern 1 (Deploy from Source). Use the language-specific Dockerfile if the project has none (Node.js, Python, Java, Go examples are in the file).
  • Pre-built image already exists → Pattern 2 (Deploy from Container Image). Check whether the registry is private and create a registry secret if needed.
  • Variable or high traffic, cost sensitivity → Pattern 3 (Auto-scaling). Pick the traffic tier from the mapping table; default to Medium.
  • Sensitive credentials, database URLs, API keys detected → Pattern 4 (Secrets & ConfigMaps). Always put credentials into a secret, never inline.
  • Batch processing, ETL, scheduled tasks → Pattern 5 (Jobs). Use ibmcloud ce job create + jobrun submit.
  • Storage events, Kafka topics, cron triggers → Pattern 6 (Event-Driven). Set up the matching subscription type.
  • Frontend + backend, microservices → Pattern 7 (Multi-Service). Deploy backend first, capture URL, pass to frontend.
  • Production deployment → Pattern 8 (Health Checks). Always configure liveness and readiness probes.

For a complete production deployment combining all patterns, use the Complete Production Example at the bottom of the file. Follow the Best Practices list and avoid the Anti-Patterns.

QUICK REFERENCE: CLI COMMANDS

Consult references/cli-reference.md whenever you need the exact syntax for a CLI command. Do not guess flags or option names — look them up.

When to use each section:

  • Project Management — Phase 0/4: select or create the target project before any deployment.
  • Application Commands — Phase 5: create, update, delete apps; tail logs during verification.
  • Application Configuration — Phase 5: set env vars, scale parameters, CPU/memory, ports, service bindings after initial deploy.
  • Revision Commands — Phase 6 / Troubleshooting: list revisions to diagnose rollout issues or roll back.
  • Job Commands — Phase 5 (batch workloads): create jobs, submit runs, inspect run logs.
  • Secret and ConfigMap Commands — Phase 4/5: create secrets for credentials before deploying; create configmaps for non-sensitive config.
  • Registry Commands — Phase 4: register private registry credentials before pulling images.
  • Build Commands — Phase 5 (source deployments): inspect build status and resubmit failed builds.
  • Common Diagnostic Patterns — Troubleshooting: use these grep-based one-liners to quickly surface the root cause of a failure.
  • Useful Filters with jq — Troubleshooting / reporting: extract structured data (app names, statuses, failed runs) from JSON output.

EXECUTION PRINCIPLES

  • Never skip authentication check
  • Always analyze source code to understand the application
  • Make informed recommendations based on detected technologies
  • Be interactive - present options and await confirmation
  • Provide context - explain why each step matters
  • Show progress - give real-time feedback
  • Verify results - confirm success before next phase
  • Offer guidance - suggest next steps

© IBM, Apache-2.0. 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 3 other files (references) in ai/skills/code-engine-specialist of IBM/CodeEngine.

  • SKILL.md
  • references/cli-reference.md
  • references/patterns.md
  • references/troubleshooting.md

Open the folder on GitHubat commit 215b721

Compare with similar skills

Code Engine Specialist 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.

Code Engine Specialist compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Code Engine Specialist this skillIBM/CodeEngine117—~3.4kAutomated safety check: PassApache-2.0
Monstermq Broker Configvogler75/monster-mq143—~2.2kAutomated safety check: PassGPL-3.0
Vss Deploy Dense CaptioningNVIDIA/skills3.5k1 repos~3.3kAutomated safety check: NotesApache-2.0
Clay Deploy Integrationjeremylongshore/tons-of-skills-marketplace2.8k—~1.8kAutomated safety check: PassMIT
Django Deployment Test Loophashgraph-online/awesome-codex-plugins1.2k—~851Automated safety check: PassMIT
LangBot Deployment Guidelangbot-app/LangBot18k—~1.2kAutomated safety check: NotesApache-2.0

Similar skills

  • Monstermq Broker Config

    vogler75/monster-mq

    Guide for configuring, deploying, and operating the MonsterMQ broker.

    143 GitHub stars~2.2k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Official

    A skill your agent uses when deploying standalone RT-VLM dense captioning or calling its REST API (uploads, captions, streams, chat-completions, Kafka).

    3.5k GitHub starsUsed in 1 repo~3.3k tokens
    Backend & APIsAuto-check: notes
  • Clay Deploy Integration

    jeremylongshore/tons-of-skills-marketplace

    Deploy Clay-powered applications to Vercel, Cloud Run, or Docker with proper secrets management.

    2.8k GitHub stars~1.8k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Django Deployment Test Loop

    hashgraph-online/awesome-codex-plugins

    Make Django deployment changes test-driven across Docker, production settings, Gunicorn, WhiteNoise/static files, environment variables, Ansible/server setup, staging smoke tests, and release checks.

    1.2k GitHub stars~851 tokensUpdated today
    DevOps & CloudAuto-check passed
  • LangBot Deployment Guide

    langbot-app/LangBot

    Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.

    18k GitHub stars~1.2k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Deployment

    matrixorigin/memoria

    Deploy Memoria with Docker Compose or Kubernetes. An agent skill from matrixorigin/memoria.

    608 GitHub stars~1.6k tokensUpdated today
    DevOps & CloudAuto-check: notes

Works with

Questions about Code Engine Specialist

What does Code Engine Specialist do?

Deploys, configures, and troubleshoots IBM Cloud Code Engine workloads using the ibmcloud ce CLI. Code Engine Specialist is an agent skill from IBM/CodeEngine, published by the product's own GitHub organization. Deploys, configures, and troubleshoots IBM Cloud Code Engine workloads using the ibmcloud ce CLI.

When should I use Code Engine Specialist?

Code Engine Specialist fits situations like: the user mentions Code Engine deployments; ibmcloud ce commands; container scaling; any Code Engine operational issue.

How do I install Code Engine Specialist in Claude Code?

Run `npx skills add IBM/CodeEngine --skill code-engine-specialist -a claude-code`. Or copy the skill folder (ai/skills/code-engine-specialist in IBM/CodeEngine) into .claude/skills/code-engine-specialist in your project. Claude Code loads it when a task matches its description.

How do I install Code Engine Specialist in Codex?

Run `npx skills add IBM/CodeEngine --skill code-engine-specialist -a codex`. Or copy the skill folder (ai/skills/code-engine-specialist in IBM/CodeEngine) into .agents/skills/code-engine-specialist in your project. Codex loads it when a task matches its description.

Can I use Code Engine Specialist 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 IBM/CodeEngine --skill code-engine-specialist -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/code-engine-specialist, .gemini/skills/code-engine-specialist, .github/skills/code-engine-specialist and .opencode/skills/code-engine-specialist in your project.

What does Code Engine Specialist need to run?

Going by SKILL.md and its folder, Code Engine Specialist needs credentials named APPID_SECRET. Our summary lists: Node.js; A credential in APPID_SECRET.

Does Code Engine Specialist 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 Code Engine Specialist 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 Code Engine Specialist use?

Code Engine Specialist is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Code Engine Specialist use?

About 3.4k tokens (SKILL.md is roughly 14k 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 6.5k tokens, read only when the agent opens those files.

What are the alternatives to Code Engine Specialist?

Skills that share tags, products or a category with Code Engine Specialist: Monstermq Broker Config (vogler75/monster-mq, 143 stars), Vss Deploy Dense Captioning (NVIDIA/skills, 3.5k stars), Clay Deploy Integration (jeremylongshore/tons-of-skills-marketplace, 2.8k stars) and Django Deployment Test Loop (hashgraph-online/awesome-codex-plugins, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Code Engine Specialist?

IBM (a GitHub organization, an official publisher) maintains it in IBM/CodeEngine, which has 117 GitHub stars. The repository was last updated on October 8, 2026.

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