Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "phoenix-calibration",
"interface": {
"displayName": "Phoenix Calibration"
},
"plugins": [
{
"name": "iris-calibration-operator",
"source": {
"source": "local",
"path": "./"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Productivity"
}
]
}
15 changes: 15 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "phoenix-calibration",
"owner": {
"name": "Phoenix Calibration",
"url": "https://github.com/Phoenix-Calibration"
},
"description": "Private Phoenix Calibration operator plugins.",
"plugins": [
{
"name": "iris-calibration-operator",
"source": ".",
"description": "Manage and consult the calibration knowledge used by Iris."
}
]
}
19 changes: 19 additions & 0 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "iris-calibration-operator",
"displayName": "Iris Calibration Operator",
"version": "1.0.0",
"description": "Manage and consult the calibration knowledge used by Iris.",
"author": {
"name": "Phoenix Calibration",
"url": "https://github.com/Phoenix-Calibration"
},
"homepage": "https://github.com/Phoenix-Calibration/iris-plugin#readme",
"repository": "https://github.com/Phoenix-Calibration/iris-plugin",
"license": "Apache-2.0",
"keywords": [
"calibration",
"requirements",
"tolerance",
"manuals"
]
}
37 changes: 37 additions & 0 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"name": "iris-calibration-operator",
"version": "1.0.0",
"description": "Manage and consult the calibration knowledge used by Iris.",
"author": {
"name": "Phoenix Calibration",
"url": "https://github.com/Phoenix-Calibration"
},
"homepage": "https://github.com/Phoenix-Calibration/iris-plugin#readme",
"repository": "https://github.com/Phoenix-Calibration/iris-plugin",
"license": "Apache-2.0",
"keywords": [
"calibration",
"requirements",
"tolerance",
"manuals"
],
"skills": "./skills/",
"mcpServers": "./.mcp.json",
"interface": {
"displayName": "Iris Calibration Operator",
"shortDescription": "Manage Iris calibration knowledge",
"longDescription": "Consult and manage calibration requirements, tolerances, equipment manuals, and evaluation rules through the authenticated Iris service.",
"developerName": "Phoenix Calibration",
"category": "Productivity",
"capabilities": [
"Interactive",
"Read",
"Write"
],
"defaultPrompt": [
"Show which calibration rules apply to this certificate.",
"Help me add a scoped calibration requirement.",
"Find the tolerance or manual for this equipment."
]
}
}
40 changes: 40 additions & 0 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Validate package

on:
pull_request:
push:
branches:
- main

permissions:
contents: read

jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install validators
run: python -m pip install --disable-pip-version-check check-jsonschema skills-ref

- name: Check package invariants
run: python scripts/validate_package.py

- name: Validate portable manifests
run: |
check-jsonschema \
--schemafile https://agent-plugins.org/schemas/1.0.0/plugin.schema.json \
plugin.json
check-jsonschema \
--schemafile https://agent-plugins.org/schemas/1.0.0/mcp.schema.json \
mcp.json

- name: Validate operator skill
run: agentskills validate skills/calibration-operator
8 changes: 8 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"iris": {
"type": "http",
"url": "https://iris-ai-339343666693.us-central1.run.app/api/mcp"
}
}
}
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Changelog

All notable changes to this package are documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0] - Unreleased

### Added

- Portable Agent Plugins v1 manifest and remote Iris MCP declaration.
- Native client metadata and private marketplace catalogs.
- Canonical `calibration-operator` skill with MCP dependency metadata.
- Package consistency, path containment, and credential scanning checks.
104 changes: 103 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,103 @@
# iris-plugin
# Iris Calibration Operator

Private distribution package for the Iris calibration operator. The repository combines one canonical operator skill with declarations for the existing remote Iris MCP service. It does not contain or deploy the MCP server.

## Package contents

- `plugin.json` and `mcp.json`: portable Agent Plugins v1 package metadata and MCP connection.
- `skills/calibration-operator/SKILL.md`: the single canonical workflow for calibration requirements, tolerances, manuals, and diagnostic evaluation.
- `.codex-plugin/plugin.json` and `skills/calibration-operator/agents/openai.yaml`: additive metadata for OpenAI clients.
- `.claude-plugin/plugin.json` and `.mcp.json`: additive metadata and connection declaration for Claude clients.
- `.agents/plugins/marketplace.json` and `.claude-plugin/marketplace.json`: private marketplace catalogs that install this same repository root.

All manifests identify the package as `iris-calibration-operator` version `1.0.0`. All MCP declarations use the logical server name `iris` and the same production endpoint.

## Security boundary

Installing or reading this package does not grant access to Iris. The client performs OAuth against the remote MCP service, and Iris remains responsible for identity, scopes, available tools, validation, confirmation, rate limits, auditing, and every mutation.

The package intentionally contains no access token, refresh token, client secret, authorization header, service credential, customer data, or MCP source code.

## Prerequisites

- Access to the private `Phoenix-Calibration/iris-plugin` repository.
- A Phoenix Calibration account authorized for Iris.
- A client that supports remote Streamable HTTP MCP and OAuth.
- Git credentials that can clone the private repository when installing through a marketplace.

Use the GitHub marketplace source shown below for distribution. A local-path marketplace install copies the complete working directory, including ignored development-only files, so local paths are reserved for controlled development checkouts.

## Install

### ChatGPT desktop app and Codex CLI

Register the private marketplace once:

```bash
codex plugin marketplace add Phoenix-Calibration/iris-plugin
```

Restart the ChatGPT desktop app, open the Plugins Directory, select **Phoenix Calibration**, and install **Iris Calibration Operator**. The equivalent CLI installation is:

```bash
codex plugin add iris-calibration-operator@phoenix-calibration
```

### Claude Code CLI and local Desktop sessions

Register the same repository and install the plugin:

```bash
claude plugin marketplace add Phoenix-Calibration/iris-plugin
claude plugin install iris-calibration-operator@phoenix-calibration
```

Claude Desktop local Code sessions share the configured marketplaces. The plugin is available from the Desktop plugin manager after the marketplace is registered.

Account-synced Chat and Cowork surfaces do not inherit a local CLI installation. For those surfaces, an administrator distributes this same package through the organization plugin catalog; no alternate skill or MCP configuration is required.

### Other Agent Plugins v1 clients

Install or clone the repository root as an Agent Plugin. A conforming client discovers:

- package metadata from `plugin.json`;
- the remote server from `mcp.json`;
- the operator workflow from `skills/calibration-operator/SKILL.md`.

## Authentication

No credentials are configured in this repository. On installation or first use, the host connects to the declared endpoint and hands control to the service's OAuth discovery and dynamic client registration flow. Effective read and write capabilities depend on the authenticated actor and granted scopes.

## Validate locally

Run package consistency and secret checks:

```bash
python3 scripts/validate_package.py
```

Validate the portable manifests and skill:

```bash
uvx --from check-jsonschema check-jsonschema \
--schemafile https://agent-plugins.org/schemas/1.0.0/plugin.schema.json \
plugin.json
uvx --from check-jsonschema check-jsonschema \
--schemafile https://agent-plugins.org/schemas/1.0.0/mcp.schema.json \
mcp.json
uvx --from skills-ref agentskills validate skills/calibration-operator
```

Validate the native Claude package and marketplace:

```bash
claude plugin validate . --strict
```

## Versioning

The package uses Semantic Versioning. Bump the version consistently in every manifest and in the skill metadata whenever the packaged workflow, connection declaration, or published metadata changes.

## License

Apache-2.0. See `LICENSE`.
19 changes: 19 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Security Policy

## Security boundary

This repository is a distribution package. It contains workflow instructions, public interface names, package metadata, and the remote Iris MCP endpoint. It does not contain the MCP implementation, deployment configuration, credentials, customer data, or authorization policy.

Possession of the package does not grant access. Iris enforces identity, scopes, available tools, validation, confirmation, and mutations on the server for every request.

Distribution artifacts must be produced from repository-tracked contents. Do not package an arbitrary development checkout: local marketplace installation copies ignored working files as well as tracked files.

## Reporting a vulnerability

Report vulnerabilities privately through the repository's **Security** tab. Do not open a public issue containing credentials, customer data, certificate data, asset information, or reproducible bypass details.

Include the affected package version, the relevant file or flow, the observed impact, and minimal reproduction steps. Revoke or rotate any exposed credential before reporting it.

## Supported versions

Security fixes are applied to the latest released `1.x` version. Older package versions should be upgraded before further investigation unless the report concerns the upgrade path itself.
9 changes: 9 additions & 0 deletions mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"mcpServers": {
"iris": {
"type": "streamable-http",
"url": "https://iris-ai-339343666693.us-central1.run.app/api/mcp"
}
}
}
19 changes: 19 additions & 0 deletions plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "iris-calibration-operator",
"version": "1.0.0",
"description": "Manage and consult the calibration knowledge used by Iris.",
"author": {
"name": "Phoenix Calibration",
"url": "https://github.com/Phoenix-Calibration"
},
"homepage": "https://github.com/Phoenix-Calibration/iris-plugin#readme",
"repository": "https://github.com/Phoenix-Calibration/iris-plugin",
"license": "Apache-2.0",
"keywords": [
"calibration",
"requirements",
"tolerance",
"manuals"
]
}
Loading
Loading