cyrnel
Use this skill whenever you have access to Cyrnel via MCP i.e., whenever the user's task involves invoking external services, running processes, chaining tool calls, or orchestrating workflows through the Cyrnel. Always trigger this skill at the start of any session where Cyrnel MCP tools are available, before writing any process code. Also use it when the user asks you to "run a tool", "create a process", "invoke a service", or "chain multiple steps together". Do NOT skip this skill just because a Cyrnel task seems simple, the runtime syntax is environment-dependent and must always be looked up first.
- License 许可
- MIT
- 所属仓库
- actelos/cyrnel
- 最近更新
- 2026-10-28
- Stars
- ★ 16
- Forks
- 4
01 前言 Front Matter
- name
- cyrnel
- description
- Use this skill whenever you have access to Cyrnel via MCP i.e., whenever the user's task involves invoking external services, running processes, chaining tool calls, or orchestrating workflows through the Cyrnel. Always trigger this skill at the start of any session where Cyrnel MCP tools are available, before writing any process code. Also use it when the user asks you to "run a tool", "create a process", "invoke a service", or "chain multiple steps together". Do NOT skip this skill just because a Cyrnel task seems simple, the runtime syntax is environment-dependent and must always be looked up first.
02 资源文件 453
- 参考文档.changeset/config.json330 B
- 参考文档.changeset/sdk-provider-auth-execution.md4.5 KB
- 参考文档.changeset/sdk-remove-oauth-client-scopes.md909 B
- 参考文档.coderabbit.yaml756 B
- 其他.dockerignore85 B
- 其他.envrc10 B
- 参考文档.github/dependabot.yml107 B
- 参考文档.github/ISSUE_TEMPLATE/bug_report.md535 B
- 参考文档.github/ISSUE_TEMPLATE/feature_request.md595 B
- 参考文档.github/pull_request_template.md387 B
- 参考文档.github/workflows/check.yml1.5 KB
- 参考文档.github/workflows/docker-check.yml1.9 KB
- 参考文档.github/workflows/publish.yml5.1 KB
- 其他.gitignore57 B
- 其他.npmrc25 B
- 参考文档AGENTS.md15.3 KB
- 其他apps/api/.example.env7.3 KB
- 其他apps/api/.gitignore297 B
- 资产文件apps/api/assets/icons/openapi.png1.2 KB
- 资产文件apps/api/assets/icons/typescript-ivm.png1.8 KB
- 其他apps/api/Dockerfile1.9 KB
- 脚本apps/api/drizzle.config.ts341 B
- 其他apps/api/drizzle/0000_brainy_frog_thor.sql3.0 KB
- 其他apps/api/drizzle/0001_add_timeout_ms_and_env_config.sql390 B
- 其他apps/api/drizzle/0002_add_module_service_versions.sql174 B
- 其他apps/api/drizzle/0003_open_the_enforcers.sql386 B
- 其他apps/api/drizzle/0004_perpetual_shadowcat.sql232 B
- 其他apps/api/drizzle/0005_modern_jetstream.sql386 B
- 其他apps/api/drizzle/0006_youthful_matthew_murdock.sql292 B
- 其他apps/api/drizzle/0007_next_rattler.sql309 B
- 其他apps/api/drizzle/0008_rapid_warhawk.sql44 B
- 其他apps/api/drizzle/0009_add_auto_update_columns.sql355 B
- 其他apps/api/drizzle/0010_sparkling_supreme_intelligence.sql347 B
- 其他apps/api/drizzle/0011_next_robin_chapel.sql1.6 KB
- 其他apps/api/drizzle/0012_tan_thunderbolt.sql3.0 KB
- 其他apps/api/drizzle/0013_loud_sunset_bain.sql188 B
- 其他apps/api/drizzle/0014_lying_sandman.sql1.1 KB
- 其他apps/api/drizzle/0015_solid_boom_boom.sql121 B
- 其他apps/api/drizzle/0016_connection-schemes-unique.sql280 B
- 其他apps/api/drizzle/0017_bumpy_robbie_robertson.sql524 B
- 其他apps/api/drizzle/0018_owner_scoped_auth.sql5.9 KB
- 其他apps/api/drizzle/0019_registry_default.sql527 B
- 其他apps/api/drizzle/0020_remove_oauth_client_available_scopes.sql299 B
- 其他apps/api/drizzle/0021_tool_policy_rules.sql1.2 KB
- 其他apps/api/drizzle/0022_processes_ref_active_unique.sql707 B
- 参考文档apps/api/drizzle/meta/_journal.json3.4 KB
- 参考文档apps/api/drizzle/meta/0000_snapshot.json16.9 KB
- 参考文档apps/api/drizzle/meta/0004_snapshot.json17.5 KB
- 参考文档apps/api/drizzle/meta/0005_snapshot.json18.3 KB
- 参考文档apps/api/drizzle/meta/0006_snapshot.json18.3 KB
- 参考文档apps/api/drizzle/meta/0007_snapshot.json19.8 KB
- 参考文档apps/api/drizzle/meta/0008_snapshot.json19.6 KB
- 参考文档apps/api/drizzle/meta/0009_snapshot.json20.5 KB
- 参考文档apps/api/drizzle/meta/0010_snapshot.json22.5 KB
- 参考文档apps/api/drizzle/meta/0011_snapshot.json27.5 KB
- 参考文档apps/api/drizzle/meta/0012_snapshot.json37.5 KB
- 参考文档apps/api/drizzle/meta/0013_snapshot.json38.0 KB
- 参考文档apps/api/drizzle/meta/0014_snapshot.json38.0 KB
- 参考文档apps/api/drizzle/meta/0015_snapshot.json38.4 KB
- 参考文档apps/api/drizzle/meta/0016_snapshot.json38.6 KB
- 参考文档apps/api/drizzle/meta/0017_snapshot.json40.8 KB
- 参考文档apps/api/drizzle/meta/0018_snapshot.json39.6 KB
- 参考文档apps/api/drizzle/meta/0019_snapshot.json47.9 KB
- 参考文档apps/api/drizzle/meta/0020_snapshot.json47.7 KB
- 参考文档apps/api/drizzle/meta/0021_snapshot.json47.7 KB
- 参考文档apps/api/drizzle/meta/0022_snapshot.json47.8 KB
- 参考文档apps/api/openapi/cyrnel.v1.openapi.json501.6 KB
- 参考文档apps/api/openapi/registry.v1.openapi.json32.5 KB
- 参考文档apps/api/package.json2.1 KB
- 脚本apps/api/scripts/dev-registry.ts21.9 KB
- 脚本apps/api/scripts/fake-oauth-provider.ts5.8 KB
- 参考文档apps/api/scripts/fixtures/calendar.v3.openapi.json208.3 KB
- 参考文档apps/api/scripts/fixtures/docs.v1.openapi.json185.2 KB
- 参考文档apps/api/scripts/fixtures/drive.v3.openapi.json312.0 KB
- 参考文档apps/api/scripts/fixtures/gmail.v1.openapi.json218.4 KB
- 资产文件apps/api/scripts/fixtures/icons/gcalendar.png18.8 KB
- 资产文件apps/api/scripts/fixtures/icons/gcontacts.png13.1 KB
- 资产文件apps/api/scripts/fixtures/icons/gdocs.png16.6 KB
- 资产文件apps/api/scripts/fixtures/icons/gdrive.png22.6 KB
- 资产文件apps/api/scripts/fixtures/icons/gmail.png10.9 KB
- 资产文件apps/api/scripts/fixtures/icons/gsheets.png14.9 KB
- 资产文件apps/api/scripts/fixtures/icons/gtasks.png25.2 KB
- 资产文件apps/api/scripts/fixtures/icons/youtube.png6.8 KB
- 参考文档apps/api/scripts/fixtures/people.v1.openapi.json153.1 KB
- 参考文档apps/api/scripts/fixtures/sheets.v4.openapi.json284.6 KB
- 参考文档apps/api/scripts/fixtures/tasks.v1.openapi.json36.4 KB
- 参考文档apps/api/scripts/fixtures/youtube.v3.openapi.json186.9 KB
- 脚本apps/api/scripts/generate-definition.ts1.6 KB
- 脚本apps/api/scripts/oauth-client-dedup.ts4.2 KB
- 脚本apps/api/scripts/openapi-definition.ts149.5 KB
- 脚本apps/api/scripts/registry-openapi-definition.ts19.3 KB
- 脚本apps/api/src/app.ts13.8 KB
- 脚本apps/api/src/constants.ts44 B
- 脚本apps/api/src/controllers/approval.controller.test.ts9.8 KB
- 脚本apps/api/src/controllers/approval.controller.ts2.9 KB
- 脚本apps/api/src/controllers/credential.controller.test.ts22.1 KB
- 脚本apps/api/src/controllers/credential.controller.ts11.3 KB
- 脚本apps/api/src/controllers/environment.controller.test.ts2.8 KB
- 脚本apps/api/src/controllers/environment.controller.ts584 B
- 脚本apps/api/src/controllers/log.controller.test.ts10.8 KB
- 脚本apps/api/src/controllers/log.controller.ts5.6 KB
- 脚本apps/api/src/controllers/module.controller.test.ts32.9 KB
- 脚本apps/api/src/controllers/module.controller.ts14.5 KB
- 脚本apps/api/src/controllers/process.controller.test.ts14.0 KB
- 脚本apps/api/src/controllers/process.controller.ts6.3 KB
- 脚本apps/api/src/controllers/registry.controller.test.ts20.4 KB
- 脚本apps/api/src/controllers/registry.controller.ts9.3 KB
- 脚本apps/api/src/controllers/service.controller.test.ts26.1 KB
- 脚本apps/api/src/controllers/service.controller.ts12.3 KB
- 脚本apps/api/src/controllers/tool-policy.controller.test.ts4.9 KB
- 脚本apps/api/src/controllers/tool-policy.controller.ts3.4 KB
- 脚本apps/api/src/controllers/tool.controller.test.ts8.8 KB
- 脚本apps/api/src/controllers/tool.controller.ts3.8 KB
- 脚本apps/api/src/db/client.ts899 B
- 脚本apps/api/src/db/schema.ts19.4 KB
- 脚本apps/api/src/index.ts2.0 KB
- 脚本apps/api/src/infra/embedding/embedder.test.ts5.6 KB
- 脚本apps/api/src/infra/embedding/embedder.ts2.7 KB
- 脚本apps/api/src/infra/execution-events.ts1.3 KB
- 脚本apps/api/src/infra/logging/bus.test.ts3.4 KB
- 脚本apps/api/src/infra/logging/bus.ts738 B
- 脚本apps/api/src/infra/logging/file-scan.test.ts4.2 KB
- 脚本apps/api/src/infra/logging/file-scan.ts2.1 KB
- 脚本apps/api/src/infra/logging/index.test.ts5.0 KB
- 脚本apps/api/src/infra/logging/index.ts4.5 KB
- 脚本apps/api/src/infra/logging/log-entry.test.ts4.7 KB
- 脚本apps/api/src/infra/logging/log-entry.ts6.8 KB
- 脚本apps/api/src/infra/logging/log-sink.test.ts9.7 KB
- 脚本apps/api/src/infra/logging/log-sink.ts7.4 KB
- 脚本apps/api/src/infra/logging/module-logger.test.ts4.5 KB
- 脚本apps/api/src/infra/logging/module-logger.ts11.3 KB
- 脚本apps/api/src/infra/logging/query.test.ts7.0 KB
- 脚本apps/api/src/infra/logging/query.ts5.0 KB
- 脚本apps/api/src/infra/logging/ring-buffer.test.ts848 B
- 脚本apps/api/src/infra/logging/ring-buffer.ts658 B
- 脚本apps/api/src/infra/logging/scrub.test.ts2.5 KB
- 脚本apps/api/src/infra/logging/scrub.ts1.4 KB
- 脚本apps/api/src/infra/logging/throttle.test.ts3.1 KB
- 脚本apps/api/src/infra/logging/throttle.ts1.3 KB
- 脚本apps/api/src/infra/search/search-engine.test.ts19.6 KB
- 脚本apps/api/src/infra/search/search-engine.ts22.2 KB
- 脚本apps/api/src/infra/search/search-schema.ts1.8 KB
- 脚本apps/api/src/infra/updater/auto-updater.test.ts3.4 KB
- 脚本apps/api/src/infra/updater/auto-updater.ts3.4 KB
- 脚本apps/api/src/middleware/auth.middleware.test.ts2.3 KB
- 脚本apps/api/src/middleware/auth.middleware.ts839 B
- 脚本apps/api/src/middleware/error.middleware.test.ts1.2 KB
- 脚本apps/api/src/middleware/error.middleware.ts1.1 KB
- 脚本apps/api/src/middleware/ip-access.middleware.test.ts5.9 KB
- 脚本apps/api/src/middleware/ip-access.middleware.ts1.9 KB
- 脚本apps/api/src/middleware/rate-limit.middleware.test.ts4.6 KB
- 脚本apps/api/src/middleware/rate-limit.middleware.ts1.4 KB
- 脚本apps/api/src/migrate.ts434 B
- 脚本apps/api/src/models/approval.model.ts559 B
- 脚本apps/api/src/models/error.model.ts322 B
- 脚本apps/api/src/models/modules.model.ts3.6 KB
- 脚本apps/api/src/models/process.model.ts1.7 KB
- 脚本apps/api/src/models/secrets.model.ts134 B
- 脚本apps/api/src/models/services.model.ts3.6 KB
- 脚本apps/api/src/models/tool-policies.model.ts3.7 KB
- 脚本apps/api/src/routes/approval.route.ts717 B
- 脚本apps/api/src/routes/credential.route.ts1.8 KB
- 脚本apps/api/src/routes/environment.route.ts389 B
- 脚本apps/api/src/routes/log.route.ts429 B
- 脚本apps/api/src/routes/module.route.ts2.8 KB
- 脚本apps/api/src/routes/oauth-client.route.ts943 B
- 脚本apps/api/src/routes/process.route.ts1.2 KB
- 脚本apps/api/src/routes/registry.route.ts2.0 KB
- 脚本apps/api/src/routes/service.route.ts2.8 KB
- 脚本apps/api/src/routes/tool-policy.route.test.ts5.8 KB
- 脚本apps/api/src/routes/tool-policy.route.ts1.0 KB
- 脚本apps/api/src/routes/tool.route.ts614 B
- 脚本apps/api/src/services/approval.service.test.ts30.0 KB
- 脚本apps/api/src/services/approval.service.ts11.1 KB
- 脚本apps/api/src/services/approval.waiter.test.ts4.1 KB
- 脚本apps/api/src/services/approval.waiter.ts1.7 KB
- 脚本apps/api/src/services/auth.sweeper.test.ts7.9 KB
- 脚本apps/api/src/services/auth.sweeper.ts4.4 KB
- 脚本apps/api/src/services/credential.provider.test.ts12.6 KB
- 脚本apps/api/src/services/credential.provider.ts8.0 KB
- 脚本apps/api/src/services/credential.service.test.ts20.1 KB
- 脚本apps/api/src/services/credential.service.ts55.7 KB
- 脚本apps/api/src/services/execution.context.ts453 B
- 脚本apps/api/src/services/log.service.test.ts7.8 KB
- 脚本apps/api/src/services/log.service.ts2.2 KB
- 脚本apps/api/src/services/modules.service.test.ts136.6 KB
- 脚本apps/api/src/services/modules.service.ts107.1 KB
- 脚本apps/api/src/services/process.holder.ts283 B
- 脚本apps/api/src/services/process.service.test.ts49.1 KB
- 脚本apps/api/src/services/process.service.ts38.2 KB
- 脚本apps/api/src/services/providers.test.ts9.5 KB
- 脚本apps/api/src/services/providers.ts3.8 KB
- 脚本apps/api/src/services/registries.service.test.ts39.1 KB
- 脚本apps/api/src/services/registries.service.ts22.2 KB
- 脚本apps/api/src/services/services.service.test.ts87.2 KB
- 脚本apps/api/src/services/services.service.ts61.2 KB
- 脚本apps/api/src/services/tool-policies.service.test.ts11.3 KB
- 脚本apps/api/src/services/tool-policies.service.ts9.4 KB
- 脚本apps/api/src/types/express.d.ts388 B
- 脚本apps/api/src/utils/compatibility.util.test.ts4.5 KB
- 脚本apps/api/src/utils/compatibility.util.ts2.4 KB
- 脚本apps/api/src/utils/db-errors.util.test.ts6.7 KB
- 脚本apps/api/src/utils/db-errors.util.ts1.1 KB
- 脚本apps/api/src/utils/download.util.test.ts14.7 KB
- 脚本apps/api/src/utils/download.util.ts8.2 KB
- 脚本apps/api/src/utils/hash.util.test.ts1.4 KB
- 脚本apps/api/src/utils/hash.util.ts285 B
- 脚本apps/api/src/utils/icon-response.util.test.ts3.2 KB
- 脚本apps/api/src/utils/icon-response.util.ts536 B
- 脚本apps/api/src/utils/icon.util.test.ts4.1 KB
- 脚本apps/api/src/utils/icon.util.ts3.0 KB
- 脚本apps/api/src/utils/pagination.util.test.ts6.3 KB
- 脚本apps/api/src/utils/pagination.util.ts3.6 KB
- 脚本apps/api/src/utils/registry-auth.util.test.ts12.4 KB
- 脚本apps/api/src/utils/registry-auth.util.ts23.3 KB
- 脚本apps/api/src/utils/registry.util.test.ts38.5 KB
- 脚本apps/api/src/utils/registry.util.ts32.0 KB
- 脚本apps/api/src/utils/schema.util.test.ts12.2 KB
- 脚本apps/api/src/utils/schema.util.ts6.3 KB
- 脚本apps/api/src/utils/secrets.util.test.ts11.5 KB
- 脚本apps/api/src/utils/secrets.util.ts6.4 KB
- 脚本apps/api/src/utils/secure-dispatcher.test.ts4.6 KB
- 脚本apps/api/src/utils/secure-dispatcher.ts4.6 KB
- 脚本apps/api/src/utils/tool-policy.util.test.ts3.8 KB
- 脚本apps/api/src/utils/tool-policy.util.ts2.7 KB
- 脚本apps/api/src/utils/validation.util.test.ts4.3 KB
- 脚本apps/api/src/utils/validation.util.ts3.5 KB
- 脚本apps/api/tests/constants.test.ts949 B
- 脚本apps/api/tests/registry-auth.intergration.test.ts17.4 KB
- 参考文档apps/api/tsconfig.json582 B
- 脚本apps/api/vitest.config.ts328 B
- 其他apps/mcp/.example.env1.8 KB
- 其他apps/mcp/.gitignore235 B
- 其他apps/mcp/Dockerfile697 B
- 参考文档apps/mcp/package.json648 B
- 脚本apps/mcp/src/app.ts902 B
- 脚本apps/mcp/src/approval-presenter.test.ts8.0 KB
- 脚本apps/mcp/src/approval-presenter.ts5.0 KB
- 脚本apps/mcp/src/approvals.test.ts6.7 KB
- 脚本apps/mcp/src/approvals.ts6.4 KB
- 脚本apps/mcp/src/config.test.ts1.4 KB
- 脚本apps/mcp/src/config.ts906 B
- 脚本apps/mcp/src/fetch.ts5.4 KB
- 脚本apps/mcp/src/index.ts1.4 KB
- 脚本apps/mcp/src/instrumentation.ts1.3 KB
- 脚本apps/mcp/src/logger.ts840 B
- 脚本apps/mcp/src/process.test.ts9.8 KB
- 脚本apps/mcp/src/process.ts5.6 KB
- 脚本apps/mcp/src/schemas.ts1.1 KB
- 脚本apps/mcp/src/tools.test.ts19.6 KB
- 脚本apps/mcp/src/tools.ts29.5 KB
- 参考文档apps/mcp/tsconfig.json582 B
- 脚本apps/mcp/vitest.config.ts306 B
- 其他apps/web/.example.env279 B
- 其他apps/web/.gitignore226 B
- 参考文档apps/web/components.json516 B
- 其他apps/web/Dockerfile722 B
- 参考文档apps/web/index.html368 B
- 参考文档apps/web/package.json1.6 KB
- 资产文件apps/web/public/favicon.svg288 B
- 资产文件apps/web/public/sidebar-logo.svg2.1 KB
- 脚本apps/web/server/api-paths.ts222 B
- 脚本apps/web/server/index.ts2.5 KB
- 其他apps/web/src/App.tsx8.8 KB
- 其他apps/web/src/components/add-registry-dialog.tsx12.7 KB
- 其他apps/web/src/components/AuthSection.tsx51.7 KB
- 其他apps/web/src/components/copy-button.tsx2.0 KB
- 其他apps/web/src/components/data-state.tsx4.0 KB
- 其他apps/web/src/components/detail-view.tsx3.1 KB
- 其他apps/web/src/components/entity-icon.tsx1.0 KB
- 其他apps/web/src/components/installed-module-card.tsx2.2 KB
- 其他apps/web/src/components/installed-service-card.tsx2.4 KB
- 其他apps/web/src/components/JsonSchemaForm.tsx16.0 KB
- 其他apps/web/src/components/mode-toggle.tsx629 B
- 其他apps/web/src/components/OAuthClientDialogs.tsx17.7 KB
- 其他apps/web/src/components/registry-module-card.tsx10.8 KB
- 其他apps/web/src/components/registry-service-card.tsx18.7 KB
- 其他apps/web/src/components/rjsf-form.tsx4.7 KB
- 其他apps/web/src/components/schema-viewer.tsx9.3 KB
- 其他apps/web/src/components/service-tool-workbench.tsx13.3 KB
- 其他apps/web/src/components/setup-wizard.tsx9.9 KB
- 其他apps/web/src/components/syntax-highlight.tsx1.5 KB
- 其他apps/web/src/components/theme-provider.tsx1.2 KB
- 其他apps/web/src/components/tool-tree.tsx2.3 KB
- 其他apps/web/src/components/ui/accordion.tsx2.7 KB
- 其他apps/web/src/components/ui/alert-dialog.tsx5.5 KB
- 其他apps/web/src/components/ui/alert.tsx2.0 KB
- 其他apps/web/src/components/ui/badge.tsx1.8 KB
- 其他apps/web/src/components/ui/button-group.tsx2.4 KB
- 其他apps/web/src/components/ui/button.tsx3.0 KB
- 其他apps/web/src/components/ui/calendar.tsx8.1 KB
- 其他apps/web/src/components/ui/card.tsx2.6 KB
- 其他apps/web/src/components/ui/checkbox.tsx1.4 KB
- 其他apps/web/src/components/ui/dialog.tsx3.5 KB
- 其他apps/web/src/components/ui/dropdown-menu.tsx8.7 KB
- 其他apps/web/src/components/ui/empty.tsx2.3 KB
- 其他apps/web/src/components/ui/field.tsx6.3 KB
- 其他apps/web/src/components/ui/input.tsx978 B
- 其他apps/web/src/components/ui/label.tsx591 B
- 其他apps/web/src/components/ui/popover.tsx2.3 KB
- 其他apps/web/src/components/ui/scroll-area.tsx1.7 KB
- 其他apps/web/src/components/ui/select.tsx6.5 KB
- 其他apps/web/src/components/ui/separator.tsx640 B
- 其他apps/web/src/components/ui/sheet.tsx4.4 KB
- 其他apps/web/src/components/ui/sidebar.tsx20.4 KB
- 其他apps/web/src/components/ui/skeleton.tsx280 B
- 其他apps/web/src/components/ui/switch.tsx1.3 KB
- 其他apps/web/src/components/ui/table.tsx2.4 KB
- 其他apps/web/src/components/ui/tabs.tsx3.4 KB
- 其他apps/web/src/components/ui/textarea.tsx852 B
- 其他apps/web/src/components/ui/tooltip.tsx2.1 KB
- 其他apps/web/src/components/version-updates-dialog.tsx5.0 KB
- 其他apps/web/src/components/wizard-dialog.tsx5.3 KB
- 脚本apps/web/src/hooks/use-cursor-pagination.ts2.9 KB
- 脚本apps/web/src/hooks/use-debounced-value.ts354 B
- 脚本apps/web/src/hooks/use-mobile.ts585 B
- 其他apps/web/src/hooks/use-notification.tsx1.0 KB
- 脚本apps/web/src/hooks/use-update-search-params.ts1.3 KB
- 其他apps/web/src/index.css8.7 KB
- 脚本apps/web/src/lib/api.ts4.0 KB
- 脚本apps/web/src/lib/copy.ts182 B
- 脚本apps/web/src/lib/env.ts89 B
- 脚本apps/web/src/lib/errors.ts4.9 KB
- 脚本apps/web/src/lib/format.ts1.3 KB
- 脚本apps/web/src/lib/log-schema.ts1.4 KB
- 脚本apps/web/src/lib/setup-status.ts3.4 KB
- 脚本apps/web/src/lib/utils.ts169 B
- 其他apps/web/src/main.tsx545 B
- 其他apps/web/src/pages/ApprovalsPage.tsx30.2 KB
- 其他apps/web/src/pages/AuthCallbackPage.tsx6.8 KB
- 其他apps/web/src/pages/LogsPage.tsx28.8 KB
- 其他apps/web/src/pages/ProcessesPage.tsx56.5 KB
- 其他apps/web/src/pages/ServiceDetailPage.tsx36.7 KB
- 其他apps/web/src/pages/ServicesPage.tsx32.9 KB
- 其他apps/web/src/pages/SettingsAuthenticationPage.tsx10.1 KB
- 其他apps/web/src/pages/SettingsModuleDetailPage.tsx35.6 KB
- 其他apps/web/src/pages/SettingsModulesPage.tsx29.6 KB
- 其他apps/web/src/pages/SettingsPage.tsx104 B
- 其他apps/web/src/pages/SettingsRegistriesPage.tsx14.8 KB
- 其他apps/web/src/pages/ToolPermissionsPage.tsx29.5 KB
- 参考文档apps/web/tsconfig.app.json901 B
- 参考文档apps/web/tsconfig.json274 B
- 参考文档apps/web/tsconfig.node.json730 B
- 参考文档apps/web/tsconfig.server.json705 B
- 脚本apps/web/vite.config.ts1.3 KB
- 资产文件assets/banner.png216.5 KB
- 参考文档biome.json964 B
- 参考文档CLAUDE.md9 B
- 参考文档CODE_OF_CONDUCT.md5.1 KB
- 参考文档CONTRIBUTING.md2.5 KB
- 参考文档DEVELOPERS.md12.2 KB
- 参考文档docker-compose.local.yml3.7 KB
- 参考文档docker-compose.yml4.0 KB
- 其他docs/cyrnel/docs/v1/adapters-modules.mdx5.2 KB
- 其他docs/cyrnel/docs/v1/approvals.mdx5.6 KB
- 其他docs/cyrnel/docs/v1/architecture.mdx5.0 KB
- 其他docs/cyrnel/docs/v1/authentication.mdx16.3 KB
- 其他docs/cyrnel/docs/v1/comparison.mdx9.5 KB
- 其他docs/cyrnel/docs/v1/environments-modules.mdx6.4 KB
- 其他docs/cyrnel/docs/v1/faq.mdx3.1 KB
- 其他docs/cyrnel/docs/v1/introduction.mdx4.6 KB
- 其他docs/cyrnel/docs/v1/modules.mdx12.2 KB
- 其他docs/cyrnel/docs/v1/pagination.mdx1.6 KB
- 其他docs/cyrnel/docs/v1/processes.mdx8.7 KB
- 其他docs/cyrnel/docs/v1/quick-start.mdx10.1 KB
- 其他docs/cyrnel/docs/v1/registries.mdx3.7 KB
- 其他docs/cyrnel/docs/v1/security.mdx15.8 KB
- 其他docs/cyrnel/docs/v1/services.mdx15.7 KB
- 其他docs/cyrnel/docs/v1/tools.mdx7.5 KB
- 其他docs/cyrnel/docs/v1/transport.mdx1.6 KB
- 其他docs/cyrnel/registry-specs/v1/authentication.mdx9.3 KB
- 其他docs/cyrnel/registry-specs/v1/building-a-registry.mdx5.2 KB
- 其他docs/cyrnel/registry-specs/v1/definitions.mdx4.4 KB
- 其他docs/cyrnel/registry-specs/v1/install-and-update.mdx5.6 KB
- 其他docs/cyrnel/registry-specs/v1/modules.mdx5.2 KB
- 其他docs/cyrnel/registry-specs/v1/pagination.mdx3.1 KB
- 其他docs/cyrnel/registry-specs/v1/registry-management-api.mdx4.9 KB
- 其他docs/cyrnel/registry-specs/v1/registry-overview.mdx3.5 KB
- 其他docs/cyrnel/registry-specs/v1/security.mdx5.9 KB
- 其他docs/cyrnel/registry-specs/v1/well-known.mdx7.7 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/adapter-module.mdx6.5 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/definition-kinds.mdx4.7 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/environment-bindings.mdx3.3 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/environment-execution.mdx5.4 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/environment-module.mdx7.0 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/module.mdx3.2 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/overview.mdx2.1 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/types.mdx13.5 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/writing-custom-adapter-module.mdx4.8 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/writing-custom-environment-module.mdx5.4 KB
- 其他docs/cyrnel/sdk-spec/5.0.0/writing-custom-modules.mdx6.8 KB
- 参考文档docs/docs.json9.2 KB
- 资产文件docs/favicon.svg333 B
- 许可证docs/LICENSE1.0 KB
- 资产文件docs/logo/dark.svg4.0 KB
- 资产文件docs/logo/light.svg4.0 KB
- 参考文档docs/openapi/cyrnel.v1.openapi.json501.6 KB
- 参考文档docs/openapi/registry.v1.openapi.json32.5 KB
- 参考文档docs/package.json129 B
- 参考文档docs/styles/config/vocabularies/Mintlify/accept.txt197 B
- 脚本examples/5.0.0/adapter-module/index.ts5.4 KB
- 参考文档examples/5.0.0/adapter-module/module.json348 B
- 脚本examples/5.0.0/environment-module/index.ts4.2 KB
- 参考文档examples/5.0.0/environment-module/module.json358 B
- 其他flake.lock1.5 KB
- 其他flake.nix453 B
- 许可证LICENSE1.0 KB
- 参考文档opencode.json1.1 KB
- 参考文档package.json1.3 KB
- 其他packages/libs/sdk/.gitignore221 B
- 其他packages/libs/sdk/.npmignore228 B
- 参考文档packages/libs/sdk/CHANGELOG.md5.2 KB
- 参考文档packages/libs/sdk/package.json924 B
- 参考文档packages/libs/sdk/README.md6.3 KB
- 脚本packages/libs/sdk/src/index.ts18.8 KB
- 参考文档packages/libs/sdk/tsconfig.json515 B
- 其他packages/modules/openapi/.gitignore221 B
- 参考文档packages/modules/openapi/package.json684 B
- 脚本packages/modules/openapi/src/client.test.ts15.2 KB
- 脚本packages/modules/openapi/src/client.ts9.9 KB
- 脚本packages/modules/openapi/src/generateDefinition.test.ts53.0 KB
- 脚本packages/modules/openapi/src/generateDefinition.ts19.4 KB
- 脚本packages/modules/openapi/src/index.test.ts16.9 KB
- 脚本packages/modules/openapi/src/index.ts7.2 KB
- 参考文档packages/modules/openapi/tests/fixtures/petstore.json5.3 KB
- 参考文档packages/modules/openapi/tests/fixtures/petstore.yaml738 B
- 脚本packages/modules/openapi/tests/generateDefinition.test.ts7.2 KB
- 参考文档packages/modules/openapi/tests/tsconfig.json178 B
- 参考文档packages/modules/openapi/tsconfig.json581 B
- 脚本packages/modules/openapi/vitest.config.ts300 B
- 其他packages/modules/typescript-ivm/.gitignore221 B
- 参考文档packages/modules/typescript-ivm/package.json645 B
- 脚本packages/modules/typescript-ivm/src/bindings.test.ts32.0 KB
- 脚本packages/modules/typescript-ivm/src/bindings.ts4.6 KB
- 脚本packages/modules/typescript-ivm/src/index.test.ts21.9 KB
- 脚本packages/modules/typescript-ivm/src/index.ts40.0 KB
- 脚本packages/modules/typescript-ivm/src/polyfills/base64.ts2.3 KB
- 脚本packages/modules/typescript-ivm/src/polyfills/console.ts1.1 KB
- 脚本packages/modules/typescript-ivm/src/polyfills/queue-microtask.ts221 B
- 脚本packages/modules/typescript-ivm/src/polyfills/random-values.ts1.2 KB
- 脚本packages/modules/typescript-ivm/src/polyfills/text-codecs.ts3.3 KB
- 脚本packages/modules/typescript-ivm/src/polyfills/timers.ts2.3 KB
- 脚本packages/modules/typescript-ivm/tests/bindings.integration.test.ts9.6 KB
- 脚本packages/modules/typescript-ivm/tests/entrypoint.test.ts2.9 KB
- 参考文档packages/modules/typescript-ivm/tests/tsconfig.json178 B
- 参考文档packages/modules/typescript-ivm/tsconfig.json566 B
- 脚本packages/modules/typescript-ivm/vitest.config.ts300 B
- 参考文档pnpm-lock.yaml380.4 KB
- 参考文档pnpm-workspace.yaml167 B
- 参考文档README.md3.1 KB
- 参考文档schema/module.schema.json2.0 KB
- 参考文档SECURITY.md2.1 KB
- 参考文档turbo.json455 B
03 SKILL.md 正文
Cyrnel Skill
You have access to cyrnel via the MCP server. Cyrnel lets you discover, orchestrate, and invoke tools exposed by external services - all through a secure sandboxed runtime. Follow this guide precisely.
1. Discovery - Read Before You Write
The execution environment is not fixed. Language, globals, and calling conventions depend on which environment module is active. Never assume syntax.
Before writing any process code:
get_environment_docs: Call this once at the start of every session. It returns the runtime language, available globals, I/O conventions, and a worked example. This is your source of truth for code syntax.list_tools: Search for tools relevant to your task. Always pass a targetedquery. Each query returns at most 5 tools (limitmaximum), so narrow withqueryrather than expecting a large page. If you have several capabilities to look up, pass them together asqueries(up to 10) and get one result group per query in a single call — do not loop. Results are paginated per query: if a group contains anextCursorand you need more, re-call with that entry'scursorand keep paging (do { ... } while (cursor)) untilnextCursorisnull: do not stop early based on the item count of one page.get_tool_docs: Call this only for the specific tools you intend to invoke. It returns parameter schemas, return shapes, and a copy-pasteable invocation snippet in the active environment's syntax.
Do not call get_tool_docs for tools you are not going to use. Do not call
get_environment_docs more than once per session.
Getting everything in a few queries
Both discovery tools batch, so the common case is two round trips before you write any process code — one search, one docs read:
list_tools— one call. Either a singlequery, orqueries: [{query, service_id?, limit?, cursor?}, ...]for up to 10 independent searches. The response is one group per query, each carryingitems(max 5),nextCursorandhasMore, echoing thequerythat produced it.get_tool_docs— one call. Passtools: [{ service_id, tool_id }, ...]for up to 10 tools and you get the docs for all of them, in the order given. Feed it theserviceId/idpairs from thelist_toolsgroups.service_id+tool_idalone documents a single tool (returns raw markdown rather than a joined document).
Two shortcuts:
list_toolswithinclude_docs: trueinlines each result's docs directly, so a single call covers discovery and schemas. Cheapest when you are still narrowing candidates; costs one extra API call per result.- Raise
limitper query, not the query count. The 5-result cap is per query, so 10 queries legitimately return up to 50 tools.
A tool whose docs cannot be fetched reports the problem inline
(docs_error on a listed row, an _Docs unavailable_ section in a batch)
instead of failing the whole response, so the readable tools still come
back.
Query phrasing for list_tools
Tool search is a hybrid FTS5 + vector index, not substring matching. The following phrasing rules are backed by measurement against the real registry:
- Phrase queries naturally: write what you mean ("create a new issue",
"send an email to the user"). Word order, stopwords, and singular/plural
forms do not matter:
"issue create","issues", and"create a new issue in the repository"all findissues_create. - Do not try to match tool names literally: the index searches names,
summaries, and descriptions. Query
"starred repos"and getactivity_list_repos_starred_by_user; never guess endpoint names. - Use vocabulary the tool's description would use: indexed text is the
match target. A synonym that never appears in the corpus may miss (e.g.
"branch rules"does not findrepos_get_branch_protection). If a query returns nothing relevant, rephrase with different words before concluding the tool does not exist. - Prefer distinctive words over ambiguous ones:
"billing"or"protection"rank the right tool first;"email"or"issue"alone are too broad to make the top 5. - Avoid typos: neither FTS5 nor the embedding model tolerate them; a misspelled query silently returns unrelated results.
2. Execution - One Process, Many Calls
When a task requires multiple tool invocations, chain them inside a single process. Do not create separate processes for each step. Do not round-trip back to the LLM between invocations.
Anti-pattern (wasteful):
create_process → call Tool A → read output → create_process → call Tool B
Correct pattern:
create_process with code that calls Tool A then Tool B sequentially
Conceptual pseudo-code (actual syntax comes from get_environment_docs):
data = invoke service_a.tool_x(params)
result = invoke service_b.tool_y({ input: data.field })
output({ status: "done", result: result })
Error handling: Wrap tool invocations in try/catch when you need to handle
failures gracefully. Uncaught errors mark the process as failed.
3. Output Filtering - Return Only What You Need
This is the most important optimization. Large raw API responses will bloat your context and degrade your reasoning. Filter aggressively.
3a. Filter inside your code
Do not pass raw API responses to the output. Extract only the fields you need.
// BAD - dumps the entire API response into your context
records = invoke crm.listContacts({ limit: 100 })
output({ records: records })
// GOOD - extracts only what matters
records = invoke crm.listContacts({ limit: 100 })
active = records.filter(r => r.status == "active")
output({ count: active.length, emails: active.map(r => r.email) })
Use the sandbox runtime for all data transformation: filtering, mapping, sorting, aggregating, string formatting. The runtime is fast and free. Your context window is not.
3b. Filter at the process level
with_stdout and with_stderr default to false. Do not change them unless
you are debugging a failure.
with_output: true(default): this is your structured result. Keep it on.with_stdout/with_stderr: set totrueonly when a process fails and you need to inspect logs. Alternatively, callget_process_stderrorget_process_stdoutafter the fact for just that process.
4. Process Reuse
If you need to re-run the same logic (e.g. a repeated check or retry):
- Create the process once and note the returned
id. - On subsequent runs, use
run_processwith thatidandforce: trueinstead of re-submitting the entire code string.
This saves significant context - a process ID is a single integer versus potentially hundreds of lines of code.
ref is optional and is a client-side correlation label, not a handle. A ref is unique
only among live processes, so re-creating with a label a still-running process holds
fails with 409 and the message deliberately tells you nothing about the holder - drop the
ref or pick another. Relying on id is what makes reuse reliable; do not build logic on
ref resolving to the same process.
5. Blocking vs Non-Blocking
block: true(default): The response waits until execution completes and includes results inline. Use this when you need the output to continue your task.block: false: The response returns immediately with just the process ID. Use this for long-running operations where you can check back later withget_process_output.
For tasks with timeouts, set a reasonable timeout value in seconds. The
default is 30 seconds.
6. Approvals - A Suspended Process Is A Decision Point
Every invoke is gated by the host's tool policy. A matching allow rule runs
the tool directly. With no matching rule the immutable default is ask, which
mints a durable approval row and parks the process in suspended until somebody
decides. This is a normal return value, not a failure.
suspended is not by itself an approval. Treat a process as awaiting a
decision only when it is suspended and has non-empty pending approvals. Other
suspensions exist and are bounded separately.
The manual loop
With CYRNEL_MCP_APPROVAL_METHOD=manual, create_process/run_process hand the
parked process straight back instead of waiting for you. The tools
list_pending_approvals, approve_approval and deny_approval exist only in
this mode - if they are missing from your tool list, the server is running
in-band and will prompt the user itself.
create_process/run_processreturnsstate: "suspended"pluspendingApprovalIds.list_pending_approvalsfiltered by that process id - read the realserviceId,toolIdand parameters.- Tell the user what is about to run, then wait for their decision.
approve_approvalordeny_approval.get_process_outputto collect the result.
A denial resumes the process and the tool call throws. Catch it and report it - the remainder of the process still runs.
Rules
- Never approve on your own initiative. The gate exists so a human sees the call. Surface the tool and its parameters and wait. If the user has asked for unattended operation, say so plainly in your answer so they can correct you.
- Approvals expire.
expiresAtis frozen when the row is created and expired rows are swept every minute. A stale id resolves as already-decided rather than as an error worth retrying. - Only decide approvals for your own process. Filter by
processId. A pending approval from another session is not yours to clear. - Chain calls to keep round trips down. Each
invokeis gated separately, so a batch of N gated calls costs N decisions. Prefer one process that does the work in sequence.
If a call returns suspended
A blocking create_process/run_process does not wait forever. Each in-band prompt is
bounded (25s); if nobody answers, the call returns normally with
state: "suspended" and pendingApprovalIds. That is a normal result, not a failure, and
it means you still have the process id.
Read pendingApprovalIds, tell the user which tool is pending and why, and wait for
their decision. You cannot answer it yourself - see the rules above. If the client never
supported elicitation you will instead get an explicit error saying so, which is safe to
retry in manual mode.
If you get a transport timeout anyway, the server side may still be holding the prompt.
Say the outcome is unknown rather than guessing; never invent a process id, and never
scan GET /processes hunting for one you lost.
Quick Reference
| Step | Tool | When |
|---|---|---|
| Learn the runtime | get_environment_docs |
Once per session |
| Find tools | list_tools |
query, or batched queries (max 5 each) |
| Read tool schemas | get_tool_docs |
One tool, or up to 10 via tools |
| Execute code | create_process |
First run of a script |
| Re-run code | run_process |
Subsequent runs (use force: true) |
| Debug failures | get_process_stderr |
Only on failed processes |
| Read results | get_process_output |
For non-blocking runs |
| List pending approvals | list_pending_approvals |
Manual mode, process is suspended |
| Decide an approval | approve_approval / deny_approval |
Only after the user decides |
Checklist
Before submitting a process:
- [ ] Read
get_environment_docsfor correct syntax - [ ] Read
get_tool_docsfor every tool you call (batch them, do not loop) - [ ] Chain all invocations in a single process
- [ ] Filter output to only the fields you need
- [ ] Leave
with_stdoutandwith_stderrat their defaults (false): only enable when debugging - [ ] Use
run_processwith the processidto re-run, not a freshref - [ ] Treat
suspended+ pending approvals as a decision point, and never self-approve - [ ] Chain gated calls so the approval round trips stay down