We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
Plugin Kit v0.3.0
Build custom intelligence adapters with scaffolding, testing, and validation. Complete development framework with CLI tooling, templates, and seamless platform integration.
CLI Commands
Everything you need for plugin development
prismatic-plugin init
prismatic-plugin init my-plugin --template=osint
Initialize a new plugin from template
prismatic-plugin dev
prismatic-plugin dev --watch
Start development server with hot reload
prismatic-plugin test
prismatic-plugin test --coverage
Run tests with coverage reporting
prismatic-plugin validate
prismatic-plugin validate
Validate plugin against platform requirements
prismatic-plugin build
prismatic-plugin build --optimize
Build plugin for production deployment
prismatic-plugin deploy
prismatic-plugin deploy --env=staging
Deploy plugin to platform environment
Adapter Templates
Pre-built templates for common intelligence sources
OSINT Adapter
Open Source Intelligence data collection
Financial Adapter
Financial data and compliance information
Technical Adapter
Technical infrastructure and security data
Social Media Adapter
Social media monitoring and analysis
Legal Adapter
Legal databases and court records
Custom Adapter
Generic template for any data source
OSINT Adapter Implementation
prismatic-plugin init my-osint-adapter --template=osint
Main Adapter Code
defmodule MyOsintAdapter do
@moduledoc """
OSINT data collection adapter for social media monitoring.
Implements the PrismaticPlugin.Adapter behaviour.
"""
use PrismaticPlugin.Adapter
@impl PrismaticPlugin.Adapter
def search(query, opts \\ []) do
with {:ok, data} <- fetch_data(query),
{:ok, normalized} <- normalize_data(data) do
{:ok, normalized}
else
{:error, reason} -> {:error, reason}
end
end
@impl PrismaticPlugin.Adapter
def stream(query, callback) when is_function(callback, 1) do
# Real-time data streaming implementation
start_stream(query, callback)
end
# Private implementation functions
defp fetch_data(query) do
# API calls with rate limiting and error handling
end
defp normalize_data(raw_data) do
# Data transformation and validation
end
end""",
config: """
# config/config.exs
config :my_osint_adapter,
api_key: {:system, "OSINT_API_KEY"},
rate_limit: [
requests_per_minute: 60,
burst_size: 10
],
retry_policy: [
max_attempts: 3,
backoff: :exponential
]""",
test: """
defmodule MyOsintAdapterTest do
use PrismaticPlugin.TestCase
test "search returns normalized data" do
mock_response = %{
"results" => [
%{"user" => "test", "content" => "test post"}
]
}
expect_http_call("/search", mock_response)
{:ok, results} = MyOsintAdapter.search("test query")
assert length(results) == 1
assert %{source: "osint", data: _} = hd(results)
end
end"""
},
"financial" => %{
init_command: "prismatic-plugin init my-financial-adapter --template=financial",
code: """
defmodule MyFinancialAdapter do
@moduledoc """
Financial data adapter with SEC compliance features.
"""
use PrismaticPlugin.Adapter
use PrismaticPlugin.Compliance, :sec
@impl PrismaticPlugin.Adapter
def search(query, opts \\ []) do
with {:ok, validated_query} <- validate_compliance(query),
{:ok, data} <- fetch_sec_data(validated_query),
{:ok, enriched} <- enrich_financial_data(data) do
{:ok, enriched}
end
end
# SEC compliance validation
defp validate_compliance(query) do
case PrismaticPlugin.Compliance.SEC.validate(query) do
:ok -> {:ok, query}
{:error, violations} -> {:error, {:compliance_error, violations}}
end
end
# Secure financial data fetching
defp fetch_sec_data(query) do
# Implementation with audit trails
end
end""",
config: """
# config/config.exs
config :my_financial_adapter,
sec_api_key: {:system, "SEC_API_KEY"},
compliance_level: :strict,
audit_trail: true,
encryption: [
algorithm: :aes_gcm,
key_rotation_days: 30
]""",
test: """
defmodule MyFinancialAdapterTest do
use PrismaticPlugin.TestCase
use PrismaticPlugin.ComplianceTestCase, :sec
test "validates SEC compliance before data access" do
invalid_query = %{insider_trading: true}
assert {:error, {:compliance_error, _}} =
MyFinancialAdapter.search(invalid_query)
end
test "maintains audit trail" do
query = %{symbol: "AAPL"}
{:ok, _results} = MyFinancialAdapter.search(query)
assert_audit_logged(:financial_query, query)
end
end
Configuration
Test Example
Development Workflow
From initialization to deployment in 6 steps
Initialize
2 minutesCreate new plugin from template
prismatic-plugin init
Configure
5 minutesSet up API keys and parameters
Edit config/config.exs
Implement
30-60 minutesWrite adapter logic and data processing
Edit lib/my_adapter.ex
Test
5 minutesRun comprehensive test suite
prismatic-plugin test
Validate
3 minutesCheck platform compatibility
prismatic-plugin validate
Deploy
10 minutesPublish to platform
prismatic-plugin deploy
Testing Framework
Comprehensive testing tools built-in
Unit Testing
- Comprehensive test templates
- Mock HTTP client
- Fixture management
- Property-based testing
Integration Testing
- Platform compatibility tests
- End-to-end validation
- Performance benchmarks
- Resource usage monitoring
Compliance Testing
- Security vulnerability scans
- Data privacy validation
- Rate limiting verification
- Error handling coverage
Run Complete Test Suite
prismatic-plugin test --coverage --compliance --performance
Start Building Plugins
Create custom intelligence adapters in minutes with our comprehensive toolkit
Need help? Check our documentation or view examples