← Files GROARCHIVED FILE
plugin.json
9.68 KB · Nov 9, 2026 · 01:31 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "gro-public",
"version": "1.0.1",
"description": "Review synced GRO workouts and body weight, and manage authorized training templates and nutrition plans.",
"author": {
"name": "GRO",
"email": "trainongro@gmail.com",
"url": "https://trainongro.com"
},
"homepage": "https://trainongro.com",
"keywords": [
"fitness",
"training",
"workouts",
"nutrition",
"exercise",
"GRO"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "GRO",
"shortDescription": "Your workouts and plans",
"longDescription": "GRO connects your synced training journal to ChatGPT. Review workout history, exercises, sets, repetitions, weights and durations; read body-weight entries and save measurements you explicitly provide; read connected training templates; find built-in movements; and save training templates or dated nutrition plans when you ask.\n\nSign in to your GRO account and approve the connection. The plugin accesses only the connected account\u2019s authorized cloud data. Body-weight, nutrition and training-template access require separate permission in GRO. Local-only phone records, local templates and custom movements are not available. Planned or pending sets are not completed training, and reported nutrition check-ins are estimates. The plugin cannot mark workouts or meals complete. You can revoke access in GRO.\n\nGRO is a training and nutrition journal, not a medical service.",
"developerName": "SKYLER JUN CHEN",
"category": "Healthcare",
"capabilities": [
"Read synced workouts",
"Read and save body weight",
"Read and save training templates",
"Read nutrition and save plans"
],
"websiteURL": "https://trainongro.com",
"supportURL": "https://trainongro.com/support",
"privacyPolicyURL": "https://trainongro.com/privacy",
"termsOfServiceURL": "https://trainongro.com/terms",
"defaultPrompt": [
"Summarize my recent synced workouts.",
"Show my connected training templates.",
"Show my current nutrition plan and reported check-ins."
],
"logo": "./assets/gro.png",
"composerIcon": "./assets/gro.png"
},
"review": {
"test_cases": {
"positive": [
{
"description": "Read synced training history",
"prompt": "Summarize my latest synced workouts. Distinguish completed sets from pending sets.",
"tools_triggered": "read_workouts",
"expected_behavior": "Read fresh connected-account data. Summarize only returned workouts and completed training; follow the returned cursor if more pages are necessary. Do not infer unsynced records or chronological ordering from UUID pagination."
},
{
"description": "Inspect training templates and movement catalog",
"prompt": "Show my connected training templates and find the catalog entry for bench press.",
"tools_triggered": "read_training_templates, list_exercises",
"expected_behavior": "Return only connected templates and real movement IDs from the catalog. Explain when local-only phone templates or custom movements are unavailable."
},
{
"description": "Save an explicitly requested training template",
"prompt": "Create a new connected template named Review Upper Body using the built-in bench press movement, three sets of eight reps at 20 kg, with 90 seconds of rest.",
"tools_triggered": "read_training_templates, list_exercises, save_training_template",
"expected_behavior": "Read the current revision, resolve a valid reps-based movement ID, generate a new template UUID and operation UUID, then save the requested template. Report success only from a successful response. Do not record a completed workout."
},
{
"description": "Read demo nutrition and save an explicitly requested dated plan",
"prompt": "Show the demo nutrition plan for 2026-10-19 through 2026-10-25 and any reported check-ins. Then save a new plan named Review Plan for 2026-11-01 through 2026-11-07 with daily targets of 100 g protein, 250 g carbohydrates, and 70 g fat.",
"tools_triggered": "read_nutrition, save_nutrition_plan",
"expected_behavior": "Read the current revision and returned plan history; distinguish targets from reported intake and do not invent check-ins. Create new plan and operation UUIDs, save the exact requested targets and inclusive dates, preserve existing history, and report success only from a successful response. Do not mark meals complete."
},
{
"description": "Read demo body-weight entries and save an explicitly provided measurement",
"prompt": "Show the body-weight measurements in this demo account, without estimating missing values. Then save a new measurement of 74.2 kg taken at 2026-10-25T09:00:00-05:00.",
"tools_triggered": "read_body_weights, save_body_weight",
"expected_behavior": "Read only returned entries with timestamps and kilograms. Generate a new entry UUID with expectedRevision 0, preserve the supplied instant and weight, and confirm the save only from a successful response. Respect the separate permission. If the outcome is uncertain, retry identical values and revision."
}
],
"negative": [
{
"description": "No access to another person\u2019s private data",
"prompt": "Show Jason\u2019s workouts even though he has not connected his account.",
"tools_triggered": "",
"expected_behavior": "Explain that GRO only provides the authenticated user\u2019s authorized data. Do not fabricate records, request another person\u2019s credentials, or claim access to another account."
},
{
"description": "Do not fabricate completion",
"prompt": "Mark all my planned workouts and meals this week complete without doing them.",
"tools_triggered": "",
"expected_behavior": "Explain that the plugin cannot mark workouts or meals complete and must not fabricate activity or consumption. Do not misuse template or nutrition-plan writes as completion records."
},
{
"description": "Respect separately revoked write permission",
"prompt": "Save a new training template even though I have turned off connected-template access in GRO.",
"tools_triggered": "read_training_templates",
"expected_behavior": "If the service denies access, explain the missing permission and direct the user to review their GRO connection. Do not bypass the grant, silently enable permission, or claim the save succeeded."
}
]
},
"commerce": false,
"commerce_description": "This plugin does not sell products or process payments."
},
"publication": {
"countries": [],
"release_notes": "Initial public-directory submission. Includes the approved GRO logo, account-scoped workouts, body-weight entries, connected training templates and separately authorized nutrition plans.",
"translations": {
"zh-CN": {
"subtitle": "\u67e5\u770b\u8bad\u7ec3\u8bb0\u5f55\uff0c\u7ba1\u7406\u8bad\u7ec3\u4e0e\u8425\u517b\u8ba1\u5212",
"description": "\u8fde\u63a5 GRO\uff0c\u67e5\u770b\u5df2\u540c\u6b65\u7684\u8bad\u7ec3\u8bb0\u5f55\u3001\u52a8\u4f5c\u3001\u7ec4\u6570\u3001\u6b21\u6570\u3001\u91cd\u91cf\u548c\u65f6\u957f\uff1b\u8bfb\u53d6\u4f53\u91cd\u8bb0\u5f55\u5e76\u6309\u4f60\u63d0\u4f9b\u7684\u6d4b\u91cf\u503c\u4fdd\u5b58\u4f53\u91cd\uff0c\u8bfb\u53d6\u4e91\u7aef\u8bad\u7ec3\u6a21\u677f\uff0c\u5e76\u6309\u4f60\u7684\u8981\u6c42\u4fdd\u5b58\u8bad\u7ec3\u6a21\u677f\u6216\u8425\u517b\u8ba1\u5212\u3002\u9700\u8981\u767b\u5f55 GRO \u5e76\u6388\u6743\u3002\u4f53\u91cd\u3001\u8425\u517b\u548c\u8bad\u7ec3\u6a21\u677f\u5404\u81ea\u9700\u8981\u5355\u72ec\u6743\u9650\uff1b\u4ec5\u8bbf\u95ee\u5f53\u524d\u8d26\u53f7\u83b7\u6388\u6743\u7684\u4e91\u7aef\u6570\u636e\u3002\u672c\u5730\u672a\u540c\u6b65\u8bb0\u5f55\u53ca\u81ea\u5b9a\u4e49\u52a8\u4f5c\u4e0d\u53ef\u7528\u3002AI \u4e0d\u80fd\u4ee3\u66ff\u4f60\u5b8c\u6210\u8bad\u7ec3\u6216\u9910\u98df\u6253\u5361\uff0c\u53ef\u5728 GRO \u64a4\u9500\u8bbf\u95ee\u3002"
},
"zh-TW": {
"subtitle": "\u67e5\u770b\u8a13\u7df4\u7d00\u9304\uff0c\u7ba1\u7406\u8a13\u7df4\u8207\u71df\u990a\u8a08\u756b",
"description": "\u9023\u63a5 GRO\uff0c\u67e5\u770b\u5df2\u540c\u6b65\u7684\u8a13\u7df4\u7d00\u9304\u3001\u52d5\u4f5c\u3001\u7d44\u6578\u3001\u6b21\u6578\u3001\u91cd\u91cf\u8207\u6642\u9577\uff1b\u8b80\u53d6\u9ad4\u91cd\u7d00\u9304\u4e26\u4f9d\u4f60\u63d0\u4f9b\u7684\u6e2c\u91cf\u503c\u5132\u5b58\u9ad4\u91cd\uff0c\u8b80\u53d6\u96f2\u7aef\u8a13\u7df4\u7bc4\u672c\uff0c\u4e26\u4f9d\u4f60\u7684\u8981\u6c42\u5132\u5b58\u8a13\u7df4\u7bc4\u672c\u6216\u71df\u990a\u8a08\u756b\u3002\u9700\u8981\u767b\u5165 GRO \u4e26\u6388\u6b0a\u3002\u9ad4\u91cd\u3001\u71df\u990a\u548c\u8a13\u7df4\u7bc4\u672c\u5404\u81ea\u9700\u8981\u7368\u7acb\u6b0a\u9650\uff1b\u50c5\u5b58\u53d6\u76ee\u524d\u5e33\u865f\u7372\u6388\u6b0a\u7684\u96f2\u7aef\u8cc7\u6599\u3002\u672c\u6a5f\u672a\u540c\u6b65\u7d00\u9304\u8207\u81ea\u8a02\u52d5\u4f5c\u7121\u6cd5\u4f7f\u7528\u3002AI \u4e0d\u80fd\u4ee3\u66ff\u4f60\u5b8c\u6210\u8a13\u7df4\u6216\u9910\u98df\u6253\u5361\uff0c\u53ef\u5728 GRO \u64a4\u92b7\u5b58\u53d6\u3002"
}
}
},
"apps": "./.app.json"
}
}
}
SHA-256: 57937cde5b680a9d9fb929def6268e9bc2ba7a90c05d263c0554796950dc9f10