6.3 KiB
Fission Python Skill Reference
Detailed reference for the fission-python-skill tools.
create-project.sh
Create a new Fission Python project from the standard template.
Usage
fission-python-skill create-project <project-name> [destination-directory]
Arguments
project-name: Name for the new fission project (used for directories and configuration)destination-directory: Optional directory where the project should be created (defaults to current directory)
Description
Creates a new Fission Python project by copying the template from the plugin's template/ directory. The plugin is portable and works from any location - the template is stored relative to the plugin itself.
The template includes:
- Standard directory structure (src/, .fission/, specs/, test/, manifests/, migrates/)
- Example Python functions with fission configuration in docstrings
- Configuration files (.fission/deployment.json, etc.)
- Development setup (devcontainer, requirements, etc.)
- CI/CD workflows (.gitea/workflows/)
- build.sh script for packaging
After project creation, the script validates that:
src/build.shexists and is executable.fission/deployment.jsonreferences./build.shsrc/requirements.txtexists and contains essential dependencies (pydantic, flask).gitea/workflows/directory exists with at least 4 workflow files- Python files have docstrings (excluding init.py)
- models.py uses pydantic.BaseModel
Validation warnings or errors are displayed to ensure the project follows best practices.
Examples
# Create project in current directory
fission-python-skill create-project my-function
# Create project in specific directory
fission-python-skill create-project my-function ./projects/
# Create project with different name
fission-python-skill create-project data-processing-tool ./services/
analyze-config.sh
Analyze and display Fission configuration from a project's .fission directory.
Usage
fission-python-skill analyze-config <project-path>
Arguments
project-path: Path to the fission project directory (should contain .fission/ subdirectory)
Description
Reads and parses the fission configuration files (.fission/deployment.json and related files) to provide a structured summary of:
- Environments and their resource allocation (CPU, memory, scaling)
- Packages and their build commands
- Functions and their HTTP triggers
- Secrets and ConfigMaps
- Archives and source configuration
Output Format
The analysis is displayed in a human-readable format showing:
- Project overview
- Environment configurations
- Package details
- Function specifications
- Security configurations (secrets/configmaps)
Examples
# Analyze current directory project
fission-python-skill analyze-config .
# Analyze specific project
fission-python-skill analyze-config ./my-fission-project
# Analyze project in parent directory
fission-python-skill analyze-config ../data-processing-service
update-docstring.sh
Parse and update the embedded Fission configuration in Python function docstrings.
Usage
fission-python-skill update-docstring <file-path> [function-name] [--set "<json>"] [--get] [--help]
Arguments
file-path: Path to the Python file containing the functionfunction-name: Optional specific function name to target (if not provided, processes all functions with fission configuration)--set "<json>": Set the fission configuration to the provided JSON string--get: Get/display the current fission configuration (default action if neither --set nor --get provided)--help: Show help message
Description
This tool extracts, displays, and can modify the Fission configuration embedded in Python function docstrings. The configuration is expected to be between fission and markers in the docstring.
The tool preserves:
- All function code outside the docstring
- Docstring content outside the fission configuration blocks
- Formatting and indentation of the existing code
- Only modifies the content between ```fission markers
Examples
# View current fission configuration in a function
fission-python-skill update-docstring ./src/my_function.py main --get
# Update fission configuration with new JSON
fission-python-skill update-docstring ./src/my_function.py main --set '{"name": "updated-function", "http_triggers": {"updated-trigger": {"url": "/new-endpoint", "methods": ["POST"]}}}'
# Process all functions with fission configuration in a file
fission-python-skill update-docstring ./src/functions.py --get
# View help
fission-python-skill update-docstring --help
Configuration Format
The fission configuration should be valid JSON representing the function's fission definition, typically including:
name: Function nameenvironment: Optional environment overridehttp_triggers: HTTP endpoint configurationschedule_triggers: Cron-based triggers (if applicable)message_queue_triggers: Message queue triggers (if applicable)
Error Handling
- Returns error if file doesn't exist
- Returns error if function not found (when specified)
- Returns error if no fission configuration found in function docstring
- Returns error if provided JSON is invalid (when using --set)
- Preserves original file on error (no partial writes)
Installation
The fission-python-skill is automatically available when the fission-plugin is installed. To use the tools directly:
-
Navigate to the plugin directory and run tools directly:
cd /path/to/fission-python-skill ./create-project.sh my-project -
Or add the plugin directory to your PATH:
export PATH="$PATH:/path/to/fission-python-skill" fission-python-skill create-project my-project
The plugin is portable and does not require any hardcoded paths - it will locate its template relative to its own location.
Template Source
The project template is sourced from: fission-python-skill/template/ (relative to the plugin location).
When creating new projects, the following files/directories are excluded from copying:
- .git/
- pycache/
- *.pyc
- .env
- test/ (test files are copied but may need project-specific updates)
The plugin is fully portable - it uses relative paths based on the script location, so it can be moved to different directories or systems without breaking.