From iris-dev
Fetches ObjectScript class source from IRIS via Atelier REST and summarizes API (methods, properties, parameters, inheritance) before calling, extending, or modifying it.
npx claudepluginhub intersystems-community/iris-devThis skill uses the workspace's default tool permissions.
Fetch the source and structure of an IRIS class **before writing any code that touches it**.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Fetch the source and structure of an IRIS class before writing any code that touches it. Works against any IRIS instance with the web server running. No Python, no MCP server needed.
CLASS="${1:-MyPackage.MyClass}"
HOST="${IRIS_HOST:-localhost}"
PORT="${IRIS_WEB_PORT:-52773}"
USER="${IRIS_USERNAME:-_SYSTEM}"
PASS="${IRIS_PASSWORD:-SYS}"
NS="${IRIS_NAMESPACE:-USER}"
PREFIX="${IRIS_WEB_PREFIX:-}"
BASE_URL="http://${HOST}:${PORT}${PREFIX:+/${PREFIX}}/api/atelier/v1"
curl -s \
-u "${USER}:${PASS}" \
"${BASE_URL}/${NS}/doc/${CLASS}.cls" \
| python3 -c "
import json, sys
data = json.load(sys.stdin)
result = data.get('result', {})
content = result.get('content', [])
# content is a list of lines
print('\n'.join(content))
"
If you get a 404: the class doesn't exist in this namespace. Try another namespace or check the class name spelling. IRIS class names are case-sensitive at the filesystem level but case-insensitive at runtime — use exact case from the source.
If you get a 401: wrong credentials. Check IRIS_USERNAME / IRIS_PASSWORD.
After fetching the source, extract and list:
Extends clause (single or multiple inheritance)ParameterDo NOT include the full implementation body in the summary — signatures and types only.
Before writing code that calls this class:
%Status return types — check with $$$ISOK / $$$ISERRByRef or Output parameters — they must be passed by reference with .Class: EnsLib.HTTP.OutboundAdapter
Extends: Ens.OutboundAdapter
Parameters:
SETTINGS = "HTTPServer,HTTPPort,URL,SSLConfig,..."
Properties:
HTTPServer As %String
HTTPPort As %String (default "80")
URL As %String
SSLConfig As %String
ClassMethods:
(none beyond inherited)
Methods:
SendFormDataArray(ByRef pHttpResponse As %Net.HttpResponse,
pFormVarNames As %String,
ByRef pData,
pUrl As %String = "") As %Status
Get(ByRef pHttpResponse As %Net.HttpResponse,
pUrl As %String = "") As %Status
Post(ByRef pHttpResponse As %Net.HttpResponse,
pUrl As %String = "",
pData As %GlobalCharacterStream = "") As %Status
for cls in MyPackage.ClassA MyPackage.ClassB Ens.BusinessOperation; do
echo "=== $cls ==="
curl -s -u "${IRIS_USERNAME:-_SYSTEM}:${IRIS_PASSWORD:-SYS}" \
"${BASE_URL}/${NS}/doc/${cls}.cls" \
| python3 -c "import json,sys; d=json.load(sys.stdin); print('\n'.join(d.get('result',{}).get('content',[])))"
echo ""
done
.cls file format). It includes /// doc comments above each method — read them.Include macros (e.g. Include %occStatus), macro names like $$$OK are defined there, not in the class itself./compile to check if the full source round-trips correctly.