github Python re-analysis due deep scan · partial (179/2,235 files)

ThreeMoonsLab/agents-shipgate

v1.0.0
github

The deterministic merge gate for AI-generated agent capability changes — a local-first, static Tool-Use Readiness review for MCP, OpenAPI, and SDK tool surfaces. Open-source CLI + GitHub Action.

maintainer
ThreeMoonsLab
licence
Apache-2.0
first seen
2026-06-04
last seen
2026-09-17
releases · 30d
3
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  2. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  3. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  4. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  5. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  6. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  7. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  8. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  9. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  10. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  11. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  12. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  13. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  14. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  15. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  16. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  17. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  18. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  19. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
  20. HIGH code analysis flagged dynamic code execution in ThreeMoonsLab/agents-shipgate
capabilities 6 tools
transport stdio · streamable-http counts 6 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • shipgate.capabilities
  • shipgate.check
  • shipgate.explain
  • shipgate.handoff
  • shipgate.preflight
  • support.search_kb
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 9df307a · analyzer v33 · 1d ago

skills & prompt files 40

danger signals19

code evidence vv1.0.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 926

filesystem 368

  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/census.py :35 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/replay.py :24 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/run.py :20 import shutil
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/score.py :28 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/select.py :21 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/vendor.py :24 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/host-config/expected.py :20 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/host-config/replay.py :29 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/host-config/run.py :18 import shutil
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/host-config/score.py :25 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/host-config/select.py :22 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/host-config/vendor.py :29 from pathlib import Path
show 28 more
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/mcp-servers/run.py :21 import shutil
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/mcp-servers/score.py :17 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/__main__.py :26 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/candidates.py :23 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/constructed.py :29 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/evaluate.py :26 import shutil
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/labels.py :29 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/reevaluate.py :15 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/rows.py :15 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/perf/generate_scenarios.py :41 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/repos/adk-dynamic-toolset/agent.py :1 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/calibration/cal-6/head/toolkit.py :4 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/calibration/cal-7/head/toolkit.py :4 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/calibration/cal-8/head/toolkit.py :4 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/crewai_tools_from_factory/head/crew.py :1 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/sdk_agent_loads_tools_from_registry/head/agents/tool_registry.py :5 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/rater/build_packet.py :77 import shutil
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/rater/deploy.py :38 import shutil
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/rater/run_rater.py :131 from pathlib import Path, PurePosixPath
  • fs ThreeMoonsLab-agents-shipgate-9df307a/conftest.py :11 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/__init__.py :74 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/__main__.py :26 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/adoption/__main__.py :9 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/adoption/cli.py :19 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/adoption/drivers/base.py :20 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/adoption/drivers/codex.py :13 import shutil
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/adoption/drivers/cursor_manual.py :13 from pathlib import Path
  • fs (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/adoption/drivers/mock.py :24 import shutil

328 more not shown — this panel samples each group; the count above is the real total.

shell / exec 148

  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/census.py :32 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/replay.py :21 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/run.py :21 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/select.py :18 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/cold-start/vendor.py :22 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/host-config/replay.py :26 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/host-config/run.py :19 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/host-config/select.py :19 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/host-config/vendor.py :27 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/mcp-servers/run.py :22 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/candidates.py :21 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/constructed.py :25 import subprocess
show 28 more
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/evaluate.py :27 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/miner/reevaluate.py :13 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/rater/build_packet.py :78 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/rater/run_rater.py :126 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/__main__.py :24 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/adoption/drivers/claude_code.py :23 from subprocess import run
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/adoption/drivers/codex.py :14 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/adoption/drivers/mock.py :41 def run(self, inputs: DriverInputs, writer: TranscriptWriter) -> RunResult:
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/harness/adoption/workspace.py :12 import subprocess
  • shell ThreeMoonsLab-agents-shipgate-9df307a/hatch_build.py :13 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/scripts/generate_schemas.py :2267 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/scripts/install_action_engine.py :16 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/scripts/regenerate_goldens.py :19 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/scripts/release_cadence.py :26 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/scripts/release_engine_smoke.py :18 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/scripts/release_sbom.py :44 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/scripts/run_benchmarks.py :39 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/scripts/update_locks.py :32 import subprocess # noqa: S404 - invokes uv, an explicit developer tool
  • shell ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/cli/bootstrap.py :31 import subprocess
  • shell ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/cli/discovery/artifacts.py :6 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/cli/fixture.py :10 import subprocess
  • shell ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/cli/install_hooks.py :506 import subprocess
  • shell ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/cli/trigger.py :23 import subprocess
  • shell ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/cli/verify/git.py :7 import subprocess
  • shell ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/core/authorization_execution.py :16 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/tests/agent_tasks/conftest.py :15 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/tests/harness/test_codex_driver.py :6 import subprocess
  • shell (weak) ThreeMoonsLab-agents-shipgate-9df307a/tests/harness/test_harness_layout.py :25 import subprocess

108 more not shown — this panel samples each group; the count above is the real total.

network 32

  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/calibration/cal-5/base/agent.py :21 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/calibration/cal-5/head/agent.py :28 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/calibration/cal-6/base/agent.py :21 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/calibration/cal-7/base/agent.py :21 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/calibration/cal-8/base/agent.py :21 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/calibration/cal-8/head/agent.py :25 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_approvals_agent_decides_refunds/base/agents/billing_tools.py :4 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_approvals_agent_decides_refunds/head/agents/billing_tools.py :4 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_billing_agent_account_note/base/agents/billing_tools.py :4 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_billing_agent_account_note/head/agents/billing_tools.py :4 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_billing_agent_receipt_lookup/base/agents/billing_tools.py :4 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_billing_agent_receipt_lookup/head/agents/billing_tools.py :4 import requests
show 20 more
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_specialists_from_routes/base/agents/billing_tools.py :4 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_specialists_from_routes/head/agents/billing_tools.py :4 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/sdk_agent_adds_ticket_update_tool/head/agents/ticket_tools.py :4 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/scripts/release_publication.py :73 import urllib.error
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/cli/verify/git.py :15 from urllib.parse import urlsplit
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/core/agent_boundary.py :16 from urllib.parse import urlsplit
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/core/authorization_execution.py :23 from urllib.parse import urlsplit
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/core/host_boundary.py :27 from urllib.parse import urlsplit
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/core/host_grants.py :23 from urllib.parse import parse_qsl, urlsplit, urlunsplit
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/core/lenses/action_surface.py :9 from urllib.parse import unquote
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/core/privacy.py :9 from urllib.parse import unquote_plus
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/inputs/conductor.py :9 from urllib.parse import urlsplit, urlunsplit
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/inputs/openapi_operation_contract.py :10 from urllib.parse import urlsplit
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/report/human_review.py :6 from urllib.parse import quote
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/schemas/human_authorization.py :20 from urllib.parse import urlsplit
  • net ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/skill/security.py :5 from urllib.parse import urlsplit
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/tests/fixtures/config_bound_factory/base/support_agent.py :4 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/tests/fixtures/config_bound_factory/head/support_agent.py :2 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/tests/fixtures/stripe_pr232/base/support_agent.py :2 import requests
  • net (weak) ThreeMoonsLab-agents-shipgate-9df307a/tests/fixtures/stripe_pr232/head/support_agent.py :2 import requests

secrets 11

  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_approvals_agent_decides_refunds/base/agents/billing_tools.py :11 return {"Authorization": f"Bearer {os.environ['BILLING_TOKEN']}"}
  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_approvals_agent_decides_refunds/head/agents/billing_tools.py :11 return {"Authorization": f"Bearer {os.environ['BILLING_TOKEN']}"}
  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_billing_agent_account_note/base/agents/billing_tools.py :11 return {"Authorization": f"Bearer {os.environ['BILLING_TOKEN']}"}
  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_billing_agent_account_note/head/agents/billing_tools.py :11 return {"Authorization": f"Bearer {os.environ['BILLING_TOKEN']}"}
  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_billing_agent_receipt_lookup/base/agents/billing_tools.py :11 return {"Authorization": f"Bearer {os.environ['BILLING_TOKEN']}"}
  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_billing_agent_receipt_lookup/head/agents/billing_tools.py :11 return {"Authorization": f"Bearer {os.environ['BILLING_TOKEN']}"}
  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_specialists_from_routes/base/agents/billing_tools.py :11 return {"Authorization": f"Bearer {os.environ['BILLING_TOKEN']}"}
  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/handoff_specialists_from_routes/head/agents/billing_tools.py :11 return {"Authorization": f"Bearer {os.environ['BILLING_TOKEN']}"}
  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/constructed/sdk_agent_adds_ticket_update_tool/head/agents/ticket_tools.py :10 return {"Authorization": f"Bearer {os.environ['ZENDESK_TOKEN']}"}
  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/benchmark/safety-qualification/rater/run_rater.py :528 if not os.environ.get("ANTHROPIC_API_KEY"):
  • secrets (weak) ThreeMoonsLab-agents-shipgate-9df307a/tests/test_adk_remote_bindings.py :71 headers={"Authorization": os.environ["READ_KEY"]},

tool registrations 6

  • support.search_kb ThreeMoonsLab-agents-shipgate-9df307a/samples/mcp_source_only_server/src/server.ts :13
  • shipgate.check ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/mcp_server/server.py :276
  • shipgate.preflight ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/mcp_server/server.py :292
  • shipgate.explain ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/mcp_server/server.py :312
  • shipgate.capabilities ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/mcp_server/server.py :326
  • shipgate.handoff ThreeMoonsLab-agents-shipgate-9df307a/src/agents_shipgate/mcp_server/server.py :340

declared dependencies 20

  • github.com/modelcontextprotocol/go-sdk@v0.2.0
  • cryptography@>=50.0.1,<51
  • packaging@>=26.3,<27
  • pydantic@>=2.13.4,<3
  • pyyaml@>=6.0.3,<7
  • ruamel.yaml@>=0.19.1,<1
  • typer@>=0.27.0,<1
  • weasyprint@>=69.0,<70
  • s@# `mcp-extra` job installs its floor and the newest release it admits.
  • build@>=1.6.0,<2
  • cyclonedx-bom@>=7.3.1,<8
  • hypothesis@>=6.165.10,<7
show 8 more
  • jsonschema@>=4.26.0,<5
  • pip-audit@>=2.10.1,<3
  • pytest@>=9.1.1,<10
  • pytest-cov@>=7.1.0,<8
  • pytest-xdist@>=3.8,<4
  • ruff@>=0.16.1,<1
  • sigstore@>=4.5.0,<5
  • twine@>=7.0.0,<8

cursor-plugin 1

  • opaque (low) ThreeMoonsLab-agents-shipgate-9df307a/.cursor/rules/agents-shipgate.mdc bundled .cursor/ plugin descriptor (ThreeMoonsLab-agents-shipgate-9df307a/.cursor/rules/agents-shipgate.mdc) — presence-detected; review the descriptor