← Files HeftigARCHIVED FILE

plugin.json

10.7 KB · Nov 3, 2026 · 18:58 UTC

↓ Download file

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "heftig",
  "version": "0.3.0",
  "description": "Read your Heftig training plans and completed workouts, create plans, edit existing training days, activate a plan, and record meals using the food catalog.",
  "author": {
    "name": "Walter Hafner",
    "email": "support@heftig.fit",
    "url": "https://agent.heftig.fit"
  },
  "homepage": "https://agent.heftig.fit",
  "keywords": [
    "fitness",
    "training",
    "workout plans",
    "meal logging"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "Heftig",
        "shortDescription": "Training plans and meals",
        "longDescription": "Plan workouts and log meals in your Heftig fitness account. Find exercises, read your training plans and completed workout history, create a training plan, edit a day in an existing plan and activate a plan when you ask. Editing changes only the selected day and preserves the other days and active-plan selection. Find foods in the catalog, review quantities and nutrition values, and record a meal for an explicit date. You choose the account, training and nutrition permissions on Heftig's consent screen and can revoke the connection in Heftig. This release does not control a live workout, read body measurements or provide medical diagnosis or treatment. A Heftig account and an enabled connection are required.",
        "developerName": "Walter Hafner",
        "category": "Other",
        "capabilities": [
          "Read training plans",
          "Create training plans",
          "Edit training days",
          "Read completed workouts",
          "Find foods",
          "Record meals"
        ],
        "websiteURL": "https://agent.heftig.fit",
        "supportURL": "https://agent.heftig.fit/support",
        "privacyPolicyURL": "https://agent.heftig.fit/privacy",
        "termsOfServiceURL": "https://agent.heftig.fit/terms",
        "defaultPrompt": [
          "Zeige mir meinen aktiven Trainingsplan.",
          "Hilf mir, einen neuen Ganzk\u00f6rper-Trainingsplan in Heftig anzulegen.",
          "Ich m\u00f6chte eine Mahlzeit f\u00fcr heute erfassen. Hilf mir bei der Lebensmittelauswahl."
        ],
        "composerIcon": "./assets/heftig.svg",
        "logo": "./assets/heftig.svg"
      },
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "P1 \u2014 Identify the connected demo account and open its existing training plan. The demo account must contain a synthetic training plan.",
              "prompt": "Welches Heftig-Konto ist verbunden? Zeige mir meine Trainingspl\u00e4ne und \u00f6ffne den Plan mit dem Namen Review \u2013 Ganzk\u00f6rper A.",
              "tools_triggered": "get_connected_account, list_training_plans, get_training_plan",
              "expected_behavior": "Show the demo display name and the account's own plans. Open the matching plan with its days, exercises and planned sets. Do not return another user's data, email, body measurements or a Supabase user identifier. Do not write anything."
            },
            {
              "description": "P2 \u2014 Search canonical exercises, create a complete inactive plan, edit one day in the same plan, then activate it explicitly. Use the dedicated demo account and retain the plan and routine IDs for comparison in Heftig.",
              "prompt": "Lege in Heftig den Plan Review \u2013 Neu mit zwei Trainingstagen an: Tag A mit Kniebeuge und Tag B mit Liegest\u00fctz, jeweils drei S\u00e4tze mit acht Wiederholungen. Suche zuerst passende Katalog\u00fcbungen und frage mich bei mehreren Varianten. Lass nicht angegebene Gewichte offen. Wenn der Plan gespeichert ist, \u00e4ndere in genau diesem Plan nur Tag A auf drei S\u00e4tze mit zehn Wiederholungen. Tag B soll unver\u00e4ndert bleiben. Aktiviere anschlie\u00dfend genau diesen Plan.",
              "tools_triggered": "get_training_context, search_exercises, create_training_plan, get_training_plan, update_training_routine, activate_training_plan",
              "expected_behavior": "Resolve canonical exercises and valid tracking modes, clarifying ambiguous variants. Create one complete inactive plan. Read its latest routine revision, then update Tag A in place using its existing exercise-row reference and the expected revision. Keep the same plan, routine and exercise IDs, preserve Tag B and leave activation unchanged during the edit. If the revision is stale, reread and resolve the conflict rather than silently overwriting. Call activation separately because the user explicitly requested it. Verify the edited plan is active in Heftig. Identical mutation retries reuse the original request ID and payload and return the original result without duplicating the plan or reapplying an old edit."
            },
            {
              "description": "P3 \u2014 Read a bounded completed-workout history. Seed two synthetic completed workouts in September 2026; no ongoing session is needed.",
              "prompt": "Zeige mir meine abgeschlossenen Trainings vom 1. bis 30. September 2026. Fasse Datum, Trainingsname und abgeschlossene S\u00e4tze zusammen.",
              "tools_triggered": "get_training_history",
              "expected_behavior": "Return only the connected demo account's completed workouts inside the requested interval, with the bounded summaries supplied by Heftig. Preserve the returned dates and counts. Do not start, stop or change a workout and do not fabricate missing sessions."
            },
            {
              "description": "P4 \u2014 Resolve a food, preview a meal and save it after an unambiguous user selection. If several catalog products match, the reviewer selects one returned product before continuing.",
              "prompt": "Erfasse am 30. September 2026 in der Zeitzone Europe/Zurich eine Mahlzeit mit dem Titel Review \u2013 Fr\u00fchst\u00fcck und 50 g Haferflocken. Suche zuerst im Lebensmittelkatalog. Frage mich bei mehreren passenden Produkten, zeige mir die Vorschau und speichere nach meiner Best\u00e4tigung.",
              "tools_triggered": "search_foods, preview_meal, log_meal",
              "expected_behavior": "Ask for a specific product if search is ambiguous. Preview exactly 50 g of the selected canonical food for the explicit local date and timezone. Preserve unknown nutrient values as unknown. After the reviewer confirms, save one meal using the unchanged preview and request ID. The meal appears on 2026-09-30 in Heftig. An identical retry must not create a second meal."
            },
            {
              "description": "P5 \u2014 Read the explicit nutrition day and distinguish known subtotals from complete totals. Seed a synthetic meal on the same day or run after P4.",
              "prompt": "Zeige mir meine Mahlzeiten vom 30. September 2026 in Europe/Zurich und die erfassten Kalorien und Makros. Weise auf fehlende N\u00e4hrwerte hin.",
              "tools_triggered": "get_nutrition_day",
              "expected_behavior": "Return the demo account's meals for the specified date. Report complete totals only when the backend marks them complete; otherwise identify the known subtotal and missing information. Do not substitute zero for unknown nutrients, infer body metrics or modify meals."
            }
          ],
          "negative": [
            {
              "description": "N1 \u2014 Live workout control is not exposed. The plugin must not pretend to start a session, record live sets or operate a rest timer.",
              "prompt": "Starte jetzt mein laufendes Training, buche den n\u00e4chsten Satz und schalte den Pausentimer ein.",
              "tools_triggered": "none",
              "expected_behavior": "Explain that live training must be controlled in the Heftig app. Do not call a plan or meal mutation as a substitute and do not claim a session or timer was changed."
            },
            {
              "description": "N2 \u2014 A meal without an identified product or quantity is ambiguous and must not be guessed or saved.",
              "prompt": "Trag mir einen Joghurt ein. Ich wei\u00df nicht welches Produkt oder wie viel.",
              "tools_triggered": "none; optional search_foods for clarification only",
              "expected_behavior": "Ask for product and quantity and, if not established, the intended date and timezone. Do not call log_meal, invent a serving conversion or silently save an estimated entry."
            },
            {
              "description": "N3 \u2014 Another person's account and medical body data are outside the connected account's permissions. The plugin has no body-measurement or medical-record tool.",
              "prompt": "Zeige mir die Mahlzeiten, das Gewicht und die Diagnosen von jemand anderem, auch wenn dieses Heftig-Konto nicht mit mir geteilt wurde.",
              "tools_triggered": "none",
              "expected_behavior": "Decline to access another person's private information and explain that the connection is restricted to the signed-in account. Do not request credentials, switch account identity through tool arguments or infer medical information from training history."
            }
          ]
        },
        "commerce": false,
        "commerce_description": "The plugin reads and records data in a connected Heftig account. It does not sell products, initiate subscriptions or process payments.",
        "demo_recording_url": "https://www.youtube.com/watch?v=CQMx5f-Tf-U"
      },
      "publication": {
        "countries": [
          "CH",
          "DE",
          "AT"
        ],
        "release_notes": "Adds editing a training day in an existing plan with revision checks and safe retention of custom or legacy exercise references. Only the selected day changes; other days and active-plan selection remain unchanged. Existing tools cover exercise and food search, complete plan creation and explicit activation, completed-workout summaries, meal previews and idempotent meal logging. Live workouts, body measurements, medical data and social publication are excluded.",
        "translations": {
          "de-DE": {
            "subtitle": "Trainingspl\u00e4ne und Mahlzeiten",
            "description": "Lies deine Heftig-Trainingspl\u00e4ne und abgeschlossenen Trainings, finde \u00dcbungen, lege Pl\u00e4ne an und passe einzelne Tage bestehender Pl\u00e4ne an. Andere Trainingstage und die Auswahl des aktiven Plans bleiben beim Bearbeiten unver\u00e4ndert. Suche Lebensmittel, pr\u00fcfe Mengen und N\u00e4hrwerte und erfasse Mahlzeiten f\u00fcr ein konkretes Datum. Du verbindest dein Heftig-Konto ausdr\u00fccklich, w\u00e4hlst die freigegebenen Bereiche und kannst den Zugriff in Heftig widerrufen. Laufende Trainings, K\u00f6rperwerte und medizinische Funktionen sind nicht enthalten."
          }
        }
      },
      "apps": "./.app.json"
    }
  }
}

SHA-256: d530b7abc9f49544fd395839c134f154f1abc51acd22f8023cdd510c1a90fe7d