Update to Charming
Snapshot Oct 8, 2026 · 06:08 UTC · version 1.2.1
Package or technical metadata updated
Package contents changed in 7 files: .app.json, .codex-plugin/plugin.json, assets/icon.png, …. Open the file diff to inspect the edits.
Observed in package metadata. These changes alone do not establish a new customer-facing feature.
Package file
{"sha256":"9317e2fdf6db1eace15d22cec5dffe58622382c7670ae87242f4ff363abe0d77","size":127}
Not present
Package file
{"sha256":"054a6485ab1341d1386418aeb5867653810d1fbba44bcb1c30f00f5bc1041a3e","size":1333}
Not present
Package file
Not present
{"sha256":"667d112dde6e894b3be7dd9fbc4ab1983884120043beb19c573a2813ab2352f9","size":15472}
Package file
Not present
{"sha256":"667d112dde6e894b3be7dd9fbc4ab1983884120043beb19c573a2813ab2352f9","size":15472}
Compare saved observations
Download comparison JSONChanged files
mcp.json →
plugin.json
--- before +++ after @@ -0,0 +1,90 @@ +{ + "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", + "name": "app-6a56c533cd7c8191b9a16cb7973a65e6", + "version": "1.2.1", + "description": "The secure cloud for apps your AI builds.", + "author": { + "name": "Tambo" + }, + "extensions": { + "com.openai": { + "interface": { + "displayName": "Charming", + "shortDescription": "Secure cloud for AI-built apps", + "longDescription": "Charming is a secure cloud for apps you build with AI. Ask your assistant to build an app with Charming. Charming gives your app a link you can open anywhere and use to invite people to use it with you. They can use the app from their own AI assistant or their browser.", + "developerName": "Tambo", + "category": "Developer Tools", + "capabilities": [], + "websiteURL": "https://usecharming.com", + "supportURL": "https://www.usecharming.com/contact-us", + "privacyPolicyURL": "https://www.usecharming.com/privacy", + "termsOfServiceURL": "https://www.usecharming.com/terms", + "defaultPrompt": [ + "Help me build a personal app that feels handcrafted, like a real object.", + "Create a meal planner I can update each week.", + "Make a shared trip planner for my friends." + ], + "brandColor": "#F77448", + "composerIcon": "./assets/icon.png", + "logo": "./assets/logo.png" + }, + "review": { + "test_cases": { + "positive": [ + { + "description": "Connect and create a personal app from a natural-language request.", + "prompt": "Make me a simple habit tracker that lets me add habits and mark them complete for today.", + "tools_triggered": "create_app", + "expected_behavior": "After OAuth connect, creates a Charming app, renders it inline as an interactive widget, and returns its app ID and hosted URL for later use across agents." + }, + { + "description": "Update an existing personal app and keep its data available.", + "prompt": "Add a weekly summary section to the habit tracker you just built.", + "tools_triggered": "update_app", + "expected_behavior": "Updates the existing Charming app in place and shows the refreshed interactive version at the same URL, without rebuilding from scratch or losing saved data." + }, + { + "description": "Read app state, then change it through the app's declared operations.", + "prompt": "Tell me whether 'drink water' is complete today, then mark it complete if it is not.", + "tools_triggered": "query_app, mutate_app", + "expected_behavior": "Reads the current value through query_app, uses mutate_app only if a change is needed, and returns the resulting state without editing the app's source." + }, + { + "description": "Submit app feedback and disclose its delivery to the Charming team.", + "prompt": "Report that the habit tracker sometimes fails to save a completed habit.", + "tools_triggered": "submit_feedback", + "expected_behavior": "Records a bug report for the app and returns its feedback ID; the feedback is also delivered to the Charming team's internal support channel." + }, + { + "description": "Safely delete an app the user no longer needs, with fail-closed confirmation.", + "prompt": "Delete the old budget tracker app.", + "tools_triggered": "list_apps, delete_app", + "expected_behavior": "Finds the target app, then asks the host to show a confirmation prompt before deleting. On hosts that cannot prompt, delete_app refuses with a confirmation_required error and only proceeds after the caller re-invokes with confirm: true; it never deletes without an obtained confirmation." + } + ], + "negative": [ + { + "description": "Do not trigger for general coding help that does not ask to create or manage a Charming app.", + "prompt": "Explain how JavaScript promises work.", + "expected_behavior": "The app should not be invoked because the request is general programming education." + }, + { + "description": "Do not trigger for unrelated calendar or scheduling requests.", + "prompt": "What meetings do I have tomorrow?", + "expected_behavior": "The app should not be invoked because Charming does not manage calendars." + }, + { + "description": "Do not trigger for requests to publish content to third-party services.", + "prompt": "Post this announcement to my company's LinkedIn page.", + "expected_behavior": "The app should not be invoked because Charming does not publish to external social platforms." + } + ] + }, + "demo_recording_url": "https://drive.google.com/file/d/1rZoLRJhFshmjKC3hTr4yBX_TpmbnwTf_/view?usp=sharing" + }, + "publication": { + "release_notes": "Updates the Charming app-building skill and marks set_template and cancel_app_build as destructive." + } + } + } +}
Full technical diff · 8 changed fields
removed /files/.app.json
{
"sha256": "9317e2fdf6db1eace15d22cec5dffe58622382c7670ae87242f4ff363abe0d77",
"size": 127
}Field is absent
removed /files/.codex-plugin~1plugin.json
{
"sha256": "054a6485ab1341d1386418aeb5867653810d1fbba44bcb1c30f00f5bc1041a3e",
"size": 1333
}Field is absent
added /files/assets~1icon.png
Field was absent
{
"sha256": "667d112dde6e894b3be7dd9fbc4ab1983884120043beb19c573a2813ab2352f9",
"size": 15472
}added /files/assets~1logo.png
Field was absent
{
"sha256": "667d112dde6e894b3be7dd9fbc4ab1983884120043beb19c573a2813ab2352f9",
"size": 15472
}added /files/mcp.json
Field was absent
{
"sha256": "01e4c4f04f0513c8d0929a3de48c7c3041e069481295325778fb394fb85b13e0",
"size": 200
}added /files/plugin.json
Field was absent
{
"sha256": "f22271ec26095355a4b0a82d71622f779ebeb73dcccb3732ea0cca325a91b4a6",
"size": 5288
}changed /files/skills~1build-a-charming-app~1SKILL.md/sha256
"279c13c5e49e184d5542c3bf62b61946660a72d5afe12814bdcdd9b74c8cca90"
"f1cd30d2dfc477c5dccb1fba612917bac583cf975a02b3d19d43a58221ad868a"
changed /files/skills~1build-a-charming-app~1SKILL.md/size
5955
6205
Full snapshot data
{
"files": {
"assets/icon.png": {
"sha256": "667d112dde6e894b3be7dd9fbc4ab1983884120043beb19c573a2813ab2352f9",
"size": 15472
},
"assets/logo.png": {
"sha256": "667d112dde6e894b3be7dd9fbc4ab1983884120043beb19c573a2813ab2352f9",
"size": 15472
},
"mcp.json": {
"sha256": "01e4c4f04f0513c8d0929a3de48c7c3041e069481295325778fb394fb85b13e0",
"size": 200
},
"plugin.json": {
"sha256": "f22271ec26095355a4b0a82d71622f779ebeb73dcccb3732ea0cca325a91b4a6",
"size": 5288
},
"skills/build-a-charming-app/SKILL.md": {
"sha256": "f1cd30d2dfc477c5dccb1fba612917bac583cf975a02b3d19d43a58221ad868a",
"size": 6205
}
}
}SHA-256 of public snapshot: c39a5d9d4b568633181dd3757f4a7133f1d4065629985e4aa33af3697e9ab48c