Optimize Simplicite Logs
GitHubOfficialFirst committed by JordanSOADistributed by GitHub
- Skill
- Tool integration
- Software development
- MIT
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides scripts to transform raw Simplicité log files into structured JSON format. By filtering unnecessary fields and focusing on critical data like timestamps, log levels, and message bodies, it significantly reduces token consumption for AI-assisted troubleshooting. The tool includes support for multi-line stack traces and provides both Python and PowerShell implementations to ensure compatibility across different environments.
What it does
- Parses raw Simplicité .txt log files into structured JSON.
- Filters log entries to include only relevant fields, reducing noise.
- Handles multi-line content such as stack traces and error logs.
- Provides both Python and PowerShell scripts for log conversion.
- Supports output to files or standard output for piping.
- Reports processing statistics including total entries and skipped items.
When to use it
- When you need to analyze large Simplicité log files without exceeding AI context limits.
- When you require structured data to perform efficient log troubleshooting.
- When you need to extract specific fields like timestamp, level, or body from verbose logs.
- When you need to integrate log analysis into a command-line pipeline.
Advantages
- Reduces token usage by approximately 56% compared to raw text.
- Improves data readability and predictability for analysis.
- Ensures multi-line errors are correctly captured and associated with their log entries.
- Offers flexible field selection to tailor output to specific diagnostic needs.
Usage examples
- “Convert my Simplicité log file to JSON keeping only the timestamp, level, and body.”
- The agent executes the Python script with the --include flag to generate a minified JSON file containing only the requested fields.
- “Process the logs.txt file and output the result to logs_minified.json.”
- The agent runs the conversion script, producing a structured JSON file ready for further analysis or ingestion.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/github/optimize-simplicite-logs/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip optimize-simplicite-logs.zip -d .agents/skills
Documentation by JordanSOA
Optimize Simplicite Logs
This skill provides the capability to parse Simplicité logs from a raw .txt file, filter fields to reduce noise, and output the result as structured JSON. This is critical for optimizing AI context size (saving ~56% of tokens) and providing structured, predictable data for troubleshooting.
When to Use This Skill
Use this skill when you need to:
Analyze user-provided Simplicité log files in
.txtformat.Avoid ingesting massive raw log files into your context window.
Extract structured fields (like
timestamp,level,body) from verbose multi-line log output.
IMPORTANT: Instead of directly reading a raw .txt log file provided by the user using file read tools, you must use one of the log converter scripts (PowerShell or Python) to parse the file into a JSON format first, optionally extracting only the fields needed.
Prerequisites
Access to either the PowerShell script (
/scripts/SimpliciteLog2Json.ps1) or the Python script (/scripts/simplicite-log2json.py).
Core Capabilities
1. Context Optimization
Reduces the tokens consumed by large Simplicité logs by extracting only relevant log fields (e.g. body, timestamp, level) and discarding non-relevant structural log data (like app, endpoint, contextPath).
2. Multi-line Support
Properly captures stack traces and multiline errors inside the body field of the JSON structure, which a simple text search might miss.
3. Stdout Support
If no output path is provided for the JSON file (e.g. omitting --output or -Output), the parsed JSON will be printed directly to stdout, allowing you to pipe the output to other tools.
Output Summary
After processing, the tool prints a summary to stderr (or console):
Processed: 123 entries, Skipped: 2 entriesUsage Examples
Example 1: Python Version (Recommended)
Convert a log file to JSON, keeping only the most important fields:
python /absolute/path/to/skills/optimize-simplicite-logs/scripts/simplicite-log2json.py <input.txt> --include timestamp,level,body --output <output.json>Example 2: PowerShell Version
/python /absolute/path/to/skills/optimize-simplicite-logs/scripts/SimpliciteLog2Json.ps1 -InputPath "<input.txt>" -Output "<output.json>" -Include "body,timestamp,level"After generating the <output.json>, you can safely read the resulting file to perform your analysis.
Guidelines
Always Convert First: Never directly read
.txtlog files from Simplicité using standard text reading tools. Always convert them to JSON using the available scripts.Filter Fields: Use
--include(Python) or-Include(PowerShell) to restrict fields to what is absolutely necessary to diagnose the issue (usuallytimestamp,level,body).Available Fields: The fields you can filter include:
timestamp,app,level,endpoint,contextPath,event,user,class,function,rowId,body.
Common Patterns
Pattern: Fast Contextual Troubleshooting
# 1. Run the script to generate a minified JSON output in the current directory
python /absolute/path/to/skills/optimize-simplicite-logs/scripts/simplicite-log2json.py logs.txt --include timestamp,level,body --output logs_minified.json
# 2. Then read logs_minified.json to understand the context.Limitations
The parser depends on a fixed regex pattern that matches the standard Simplicité log output. If the log format has been heavily customized, parsing might fail or degrade.
Files
- ATTRIBUTION.mdAdded by AutoGineer883 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md3.7 KiB
- scripts/SimpliciteLog2Json.ps1Script4.2 KiB
- scripts/simplicite-log2json.pyScript4.4 KiB
scripts/simplicite-log2json.py
import argparse
import re
import json
import sys
VALID_FIELDS = [
"timestamp", "app", "level", "endpoint", "contextPath", "event",
"user", "class", "function", "rowId", "body"
]
def validate_fields(value):
fields = [f.strip() for f in value.split(",")]
for f in fields:
if f not in VALID_FIELDS:
raise argparse.ArgumentTypeError(f"invalid field: {f}. Available: {', '.join(VALID_FIELDS)}")
return fields
def parse_args():
parser = argparse.ArgumentParser(
prog="simplicite-log2json",
description="Parse Simplicité logs and output JSON."
)
parser.add_argument("input", help="Input .txt log file path")
parser.add_argument("-o", "--output", help="Output file path (default: stdout)", metavar="FILE")
group = parser.add_mutually_exclusive_group()
group.add_argument("--include", help=f"Fields to include (comma-separated). Available: {', '.join(VALID_FIELDS)}", type=validate_fields, metavar="FIELDS", action="append")
group.add_argument("--exclude", help=f"Fields to exclude (comma-separated). Available: {', '.join(VALID_FIELDS)}", type=validate_fields, metavar="FIELDS", action="append")
return parser.parse_args()
def parse_log_entry(text, log_regex):
match = log_regex.match(text)
if match:
return {
"timestamp": match.group("timestamp") or "",
"app": match.group("app") or "",
"level": match.group("level") or "",
"endpoint": match.group("endpoint") or "",
"contextPath": match.group("contextPath") or "",
"event": match.group("event") or "",
"user": match.group("user") or "",
"class": match.group("class") or "",
"function": match.group("function") or "",
"rowId": match.group("rowId") or "",
"body": match.group("body") or "",
}
return None
def filter_entry(entry, include, exclude):
filtered = {}
for k, v in entry.items():
if include is not None and k not in include:
continue
if exclude is not None and k in exclude:
continue
filtered[k] = v
return filtered
def main():
args = parse_args()
include_fields = [item for sublist in args.include for item in sublist] if args.include else None
exclude_fields = [item for sublist in args.exclude for item in sublist] if args.exclude else None
log_regex = re.compile(r"^(?P<timestamp>.*?)\|(?P<app>SIMPLICITE)\|(?P<level>.+?)\|\|(?P<endpoint>.*?)\|(?P<contextPath>.*?)\|(?P<event>.*?)\|(?P<user>.*?)\|(?P<class>.*?)\|(?P<function>.*?)\|(?P<rowId>.*?)\|(?P<body>.*)$", re.DOTALL)
timestamp_re = re.compile(r"^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}")
entries = []
buffer = []
processed = 0
skipped = 0
try:
with open(args.input, "r", encoding="utf-8") as f:
for line in f:
line_stripped = line.rstrip('\n')
if timestamp_re.match(line_stripped):
if buffer:
entry_text = '\n'.join(buffer)
entry = parse_log_entry(entry_text, log_regex)
if entry:
entries.append(entry)
processed += 1
else:
skipped += 1
buffer = []
buffer.append(line_stripped)
if buffer:
entry_text = '\n'.join(buffer)
entry = parse_log_entry(entry_text, log_regex)
if entry:
entries.append(entry)
processed += 1
else:
skipped += 1
except Exception as e:
sys.stderr.write(f"Failed to open input file: {e}\n")
sys.exit(1)
filtered = [filter_entry(entry, include_fields, exclude_fields) for entry in entries]
json_str = json.dumps(filtered, indent=2)
if args.output:
try:
with open(args.output, "w", encoding="utf-8") as f:
f.write(json_str)
except Exception as e:
sys.stderr.write(f"Failed to create output file: {e}\n")
sys.exit(1)
else:
print(json_str)
sys.stderr.write(f"Processed: {processed} entries, Skipped: {skipped} entries\n")
if __name__ == "__main__":
main()
Requirements and compatibility
Written for: GitHub Copilot
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Python
Security
What our scanner noticed· Low risk
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- First committed by
JordanSOA
- Publisher
- GitHub (Official)
- Distributed by
- GitHub
- Source
- github/awesome-copilot · skills/optimize-simplicite-logs · commit 797337f
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- JordanSOA
AutoGineer is not affiliated with or endorsed by JordanSOA or GitHub.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download optimize-simplicite-logs.zip