Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"interface": {
"displayName": "LottieFiles"
},
"name": "lottiefiles",
"plugins": [
{
"category": "Creativity",
"name": "lottiefiles-creator",
"policy": {
"authentication": "ON_INSTALL",
"installation": "AVAILABLE"
},
"source": {
"path": "./plugins/lottiefiles-creator",
"source": "local"
}
}
]
}
24 changes: 24 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"$schema": "https://json.schemastore.org/claude-code-marketplace.json",
"description": "Create, manage, and export Lottie animations.",
"name": "lottiefiles",
"owner": {
"name": "LottieFiles"
},
"plugins": [
{
"category": "creativity",
"description": "Create, manage, and export Lottie animations.",
"keywords": [
"lottiefiles",
"lottie",
"animation",
"creator"
],
"name": "lottiefiles-creator",
"source": "./plugins/lottiefiles-creator",
"version": "0.1.0"
}
],
"version": "0.1.0"
}
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
cooldown:
default-days: 7
semver-major-days: 14
commit-message:
prefix: "chore(ci)"
62 changes: 62 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Public distribution CI

on:
pull_request:
push:
branches: [main]
workflow_dispatch:

permissions: {}

env:
MISE_AUTO_INSTALL: "0"

concurrency:
group: public-distribution-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash -euo pipefail {0}

jobs:
verify:
name: Verify public distribution
runs-on: ubuntu-24.04
timeout-minutes: 10
permissions:
contents: read
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "3.12"
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4
with:
cache: false
version: 2026.9.1
- name: Install pinned check tools
run: mise install --yes
- name: Run deterministic distribution checks
run: bash scripts/check.sh
- name: Scan public files
run: mise exec -- gitleaks detect --source . --no-banner --redact
- name: Lint workflows and scripts
run: |
mise exec -- actionlint .github/workflows/*.yml
mise exec -- zizmor --pedantic .github
mise exec -- shellcheck scripts/*.sh
- name: Validate MCP Registry server metadata
run: bash scripts/check-mcp-registry.sh
- name: Check public links without product endpoint probes
# These bot-protected LottieFiles pages need human verification.
run: >-
mise exec -- lychee --no-progress --exclude-all-private --max-concurrency 16
--exclude 'https://creator-mcp[.]lottiefiles[.]com/.*'
--exclude '^https://lottiefiles[.]com/$'
--exclude '^https://lottiefiles[.]com/brand-assets$'
--exclude '^https://lottiefiles[.]com/page/privacy-policy$'
--exclude '^https://lottiefiles[.]com/page/terms-and-conditions$'
README.md content docs examples skills submission
44 changes: 44 additions & 0 deletions .github/workflows/publication-probe.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Publication availability probe

on:
workflow_dispatch:
schedule:
- cron: "23 6 * * *"

permissions: {}

concurrency:
group: publication-probe
cancel-in-progress: false

defaults:
run:
shell: bash -euo pipefail {0}

jobs:
probe:
name: Probe unauthenticated public endpoints
runs-on: ubuntu-24.04
timeout-minutes: 5
permissions: {}
steps:
- name: Check production publication endpoint
run: |
endpoints=(
"https://creator-mcp.lottiefiles.com"
)
for endpoint in "${endpoints[@]}"; do
health_status="$(curl --silent --show-error --output /dev/null --write-out '%{http_code}' \
--connect-timeout 10 --max-time 20 --proto '=https' --tlsv1.2 "$endpoint/health" || true)"
mcp_status="$(curl --silent --show-error --output /dev/null --write-out '%{http_code}' \
--connect-timeout 10 --max-time 20 --proto '=https' --tlsv1.2 \
--header 'content-type: application/json' --request POST \
--data '{"jsonrpc":"2.0","id":"publication-probe","method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"publication-probe","version":"1"}}}' \
"$endpoint/mcp" || true)"
echo "$endpoint health=$health_status unauthenticated-mcp=$mcp_status"
test "$health_status" = "200"
case "$mcp_status" in
401|403) ;;
*) echo "Expected unauthenticated /mcp status 401 or 403." >&2; exit 1 ;;
esac
done
93 changes: 93 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: Create distribution release

on:
push:
tags: ["v*"]

permissions: {}

env:
MISE_AUTO_INSTALL: "0"

concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false

defaults:
run:
shell: bash -euo pipefail {0}

jobs:
verify:
name: Verify release content
runs-on: ubuntu-24.04
timeout-minutes: 15
permissions:
contents: read
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: "3.12"
- uses: jdx/mise-action@c2a87611a18de5b3828c5652fe268e992400cb5c # v4
with:
cache: false
version: 2026.9.1
- name: Install pinned check tools
run: mise install --yes
- name: Run deterministic distribution checks
run: bash scripts/check.sh
- name: Scan public files
run: mise exec -- gitleaks detect --source . --no-banner --redact
- name: Lint workflows and scripts
run: |
mise exec -- actionlint .github/workflows/*.yml
mise exec -- zizmor --pedantic .github
mise exec -- shellcheck scripts/*.sh
- name: Validate MCP Registry server metadata
run: bash scripts/check-mcp-registry.sh
- name: Check public links without product endpoint probes
# These bot-protected LottieFiles pages need human verification.
run: >-
mise exec -- lychee --no-progress --exclude-all-private --max-concurrency 16
--exclude 'https://creator-mcp[.]lottiefiles[.]com/.*'
--exclude '^https://lottiefiles[.]com/$'
--exclude '^https://lottiefiles[.]com/brand-assets$'
--exclude '^https://lottiefiles[.]com/page/privacy-policy$'
--exclude '^https://lottiefiles[.]com/page/terms-and-conditions$'
README.md content docs examples skills submission
- name: Verify release tag versions
run: python3 scripts/check-version.py "$GITHUB_REF_NAME"
- name: Create deterministic archives
run: python3 scripts/package.py --output dist
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: lottiefiles-creator-${{ github.ref_name }}
path: dist/
if-no-files-found: error

publish:
name: Attach verified distribution archives
needs: verify
runs-on: ubuntu-24.04
timeout-minutes: 5
permissions:
attestations: write # Store provenance for the verified local release archives.
contents: write # Create the GitHub release and attach verified archives.
id-token: write # Sign the archive provenance with this GitHub workflow identity.
steps:
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: lottiefiles-creator-${{ github.ref_name }}
path: dist
- uses: actions/attest-build-provenance@46a583fd92dfbf46b772907a9740f888f4324bb9 # v3.1.0
with:
subject-path: dist/*
- name: Attach verified release archives
env:
GH_TOKEN: ${{ github.token }}
run: >-
gh release create "$GITHUB_REF_NAME" dist/*.tar.gz dist/*.zip dist/*.sha256
--title "$GITHUB_REF_NAME" --generate-notes
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.DS_Store
node_modules/
dist/
coverage/
__pycache__/
*.py[cod]
*.log
.env
.env.*
!.env.example
25 changes: 25 additions & 0 deletions .grok-plugin/marketplace.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"description": "Create, manage, and export Lottie animations.",
"name": "lottiefiles",
"owner": {
"name": "LottieFiles"
},
"plugins": [
{
"category": "creativity",
"description": "Create, manage, and export Lottie animations.",
"keywords": [
"lottiefiles",
"lottie",
"animation",
"creator"
],
"name": "lottiefiles-creator",
"source": {
"path": "./plugins/lottiefiles-creator",
"type": "local"
},
"version": "0.1.0"
}
]
}
8 changes: 8 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"mcpServers": {
"lottiefiles-creator": {
"type": "http",
"url": "https://creator-mcp.lottiefiles.com/mcp"
}
}
}
9 changes: 9 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Public package guidance

Use the canonical public content under `content/skills` and `content/assets`. The generator creates platform copies. Do not edit generated copies by hand.

Keep the package public. Do not add internal paths, hostnames, private source, secrets, user data, debug payloads, or proprietary schema.

For GraphQL, discover the published schema first, request minimum fields, use variables, paginate lists, inspect before mutation, and require explicit user intent and host confirmation for writes or deletes. Never bypass scopes or log tokens or variables. Handle partial errors.

Use exact names from the released public tool contract. Verify links and content generation before publishing.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Changelog

All notable changes use this file.

## 0.1.0 - 2026-09-05

- Add initial public skills for Engine workflows, LottieFiles GraphQL workflows, and animation review.
- Add safe workflow examples and marketplace submission material.
- Add installation, security, privacy, release, and support documentation.
13 changes: 13 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Contributing

Keep public content accurate, minimal, and safe.

1. Change canonical skills only under `content/skills` and assets only under `content/assets`.
2. Do not add private paths, internal hostnames, secrets, user data, debug payloads, or proprietary schema.
3. Do not publish a GraphQL field, type, or mutation name until a public schema confirms it.
4. Use exact released tool names. Keep unverified argument shapes in a clearly marked contract reference.
5. Keep instructions in active voice and Simplified Technical English.
6. Update examples, submission tests, and release notes for behavior changes.
7. Run the generator and validation commands defined by the maintainers before a release.

Do not modify generated platform copies by hand. Update canonical content and regenerate.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 LottieFiles

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Loading