claude-mpm 4.17.0__py3-none-any.whl → 4.17.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of claude-mpm might be problematic. Click here for more details.
- claude_mpm/VERSION +1 -1
- claude_mpm/skills/bundled/api-documentation.md +393 -0
- claude_mpm/skills/bundled/async-testing.md +571 -0
- claude_mpm/skills/bundled/code-review.md +143 -0
- claude_mpm/skills/bundled/database-migration.md +199 -0
- claude_mpm/skills/bundled/docker-containerization.md +194 -0
- claude_mpm/skills/bundled/express-local-dev.md +1429 -0
- claude_mpm/skills/bundled/fastapi-local-dev.md +1199 -0
- claude_mpm/skills/bundled/git-workflow.md +414 -0
- claude_mpm/skills/bundled/imagemagick.md +204 -0
- claude_mpm/skills/bundled/json-data-handling.md +223 -0
- claude_mpm/skills/bundled/nextjs-local-dev.md +807 -0
- claude_mpm/skills/bundled/pdf.md +141 -0
- claude_mpm/skills/bundled/performance-profiling.md +567 -0
- claude_mpm/skills/bundled/refactoring-patterns.md +180 -0
- claude_mpm/skills/bundled/security-scanning.md +327 -0
- claude_mpm/skills/bundled/systematic-debugging.md +473 -0
- claude_mpm/skills/bundled/test-driven-development.md +378 -0
- claude_mpm/skills/bundled/vite-local-dev.md +1061 -0
- claude_mpm/skills/bundled/web-performance-optimization.md +2305 -0
- claude_mpm/skills/bundled/xlsx.md +157 -0
- {claude_mpm-4.17.0.dist-info → claude_mpm-4.17.1.dist-info}/METADATA +1 -1
- {claude_mpm-4.17.0.dist-info → claude_mpm-4.17.1.dist-info}/RECORD +27 -7
- {claude_mpm-4.17.0.dist-info → claude_mpm-4.17.1.dist-info}/WHEEL +0 -0
- {claude_mpm-4.17.0.dist-info → claude_mpm-4.17.1.dist-info}/entry_points.txt +0 -0
- {claude_mpm-4.17.0.dist-info → claude_mpm-4.17.1.dist-info}/licenses/LICENSE +0 -0
- {claude_mpm-4.17.0.dist-info → claude_mpm-4.17.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill_id: xlsx
|
|
3
|
+
skill_version: 0.1.0
|
|
4
|
+
description: Working with Excel files programmatically.
|
|
5
|
+
updated_at: 2025-10-30T17:00:00Z
|
|
6
|
+
tags: [excel, xlsx, spreadsheet, data]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Excel/XLSX Manipulation
|
|
10
|
+
|
|
11
|
+
Working with Excel files programmatically.
|
|
12
|
+
|
|
13
|
+
## Python (openpyxl)
|
|
14
|
+
|
|
15
|
+
### Reading Excel
|
|
16
|
+
```python
|
|
17
|
+
from openpyxl import load_workbook
|
|
18
|
+
|
|
19
|
+
wb = load_workbook('data.xlsx')
|
|
20
|
+
ws = wb.active # Get active sheet
|
|
21
|
+
|
|
22
|
+
# Read cell
|
|
23
|
+
value = ws['A1'].value
|
|
24
|
+
|
|
25
|
+
# Iterate rows
|
|
26
|
+
for row in ws.iter_rows(min_row=2, values_only=True):
|
|
27
|
+
print(row)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Writing Excel
|
|
31
|
+
```python
|
|
32
|
+
from openpyxl import Workbook
|
|
33
|
+
|
|
34
|
+
wb = Workbook()
|
|
35
|
+
ws = wb.active
|
|
36
|
+
ws.title = "Data"
|
|
37
|
+
|
|
38
|
+
# Write data
|
|
39
|
+
ws['A1'] = 'Name'
|
|
40
|
+
ws['B1'] = 'Age'
|
|
41
|
+
ws.append(['John', 30])
|
|
42
|
+
ws.append(['Jane', 25])
|
|
43
|
+
|
|
44
|
+
wb.save('output.xlsx')
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Formatting
|
|
48
|
+
```python
|
|
49
|
+
from openpyxl.styles import Font, PatternFill
|
|
50
|
+
|
|
51
|
+
# Bold header
|
|
52
|
+
ws['A1'].font = Font(bold=True)
|
|
53
|
+
|
|
54
|
+
# Background color
|
|
55
|
+
ws['A1'].fill = PatternFill(start_color="FFFF00", fill_type="solid")
|
|
56
|
+
|
|
57
|
+
# Number format
|
|
58
|
+
ws['B2'].number_format = '0.00' # Two decimals
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Formulas
|
|
62
|
+
```python
|
|
63
|
+
# Add formula
|
|
64
|
+
ws['C2'] = '=A2+B2'
|
|
65
|
+
|
|
66
|
+
# Sum column
|
|
67
|
+
ws['D10'] = '=SUM(D2:D9)'
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Python (pandas)
|
|
71
|
+
|
|
72
|
+
### Reading Excel
|
|
73
|
+
```python
|
|
74
|
+
import pandas as pd
|
|
75
|
+
|
|
76
|
+
# Read sheet
|
|
77
|
+
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
|
|
78
|
+
|
|
79
|
+
# Read multiple sheets
|
|
80
|
+
dfs = pd.read_excel('data.xlsx', sheet_name=None)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Writing Excel
|
|
84
|
+
```python
|
|
85
|
+
# Write DataFrame
|
|
86
|
+
df.to_excel('output.xlsx', index=False)
|
|
87
|
+
|
|
88
|
+
# Multiple sheets
|
|
89
|
+
with pd.ExcelWriter('output.xlsx') as writer:
|
|
90
|
+
df1.to_excel(writer, sheet_name='Sheet1')
|
|
91
|
+
df2.to_excel(writer, sheet_name='Sheet2')
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Data Transformation
|
|
95
|
+
```python
|
|
96
|
+
# Filter
|
|
97
|
+
filtered = df[df['Age'] > 25]
|
|
98
|
+
|
|
99
|
+
# Group by
|
|
100
|
+
grouped = df.groupby('Department')['Salary'].mean()
|
|
101
|
+
|
|
102
|
+
# Pivot
|
|
103
|
+
pivot = df.pivot_table(values='Sales', index='Region', columns='Product')
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## JavaScript (xlsx)
|
|
107
|
+
|
|
108
|
+
```javascript
|
|
109
|
+
import XLSX from 'xlsx';
|
|
110
|
+
|
|
111
|
+
// Read file
|
|
112
|
+
const workbook = XLSX.readFile('data.xlsx');
|
|
113
|
+
const sheetName = workbook.SheetNames[0];
|
|
114
|
+
const worksheet = workbook.Sheets[sheetName];
|
|
115
|
+
|
|
116
|
+
// Convert to JSON
|
|
117
|
+
const data = XLSX.utils.sheet_to_json(worksheet);
|
|
118
|
+
|
|
119
|
+
// Write file
|
|
120
|
+
const newWorksheet = XLSX.utils.json_to_sheet(data);
|
|
121
|
+
const newWorkbook = XLSX.utils.book_new();
|
|
122
|
+
XLSX.utils.book_append_sheet(newWorkbook, newWorksheet, 'Data');
|
|
123
|
+
XLSX.writeFile(newWorkbook, 'output.xlsx');
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Common Operations
|
|
127
|
+
|
|
128
|
+
### CSV to Excel
|
|
129
|
+
```python
|
|
130
|
+
import pandas as pd
|
|
131
|
+
|
|
132
|
+
df = pd.read_csv('data.csv')
|
|
133
|
+
df.to_excel('data.xlsx', index=False)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Excel to CSV
|
|
137
|
+
```python
|
|
138
|
+
df = pd.read_excel('data.xlsx')
|
|
139
|
+
df.to_csv('data.csv', index=False)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Merging Excel Files
|
|
143
|
+
```python
|
|
144
|
+
dfs = []
|
|
145
|
+
for file in ['file1.xlsx', 'file2.xlsx', 'file3.xlsx']:
|
|
146
|
+
df = pd.read_excel(file)
|
|
147
|
+
dfs.append(df)
|
|
148
|
+
|
|
149
|
+
combined = pd.concat(dfs, ignore_index=True)
|
|
150
|
+
combined.to_excel('merged.xlsx', index=False)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Remember
|
|
154
|
+
- Close workbooks after use
|
|
155
|
+
- Handle large files in chunks
|
|
156
|
+
- Validate data before writing
|
|
157
|
+
- Use pandas for data analysis, openpyxl for formatting
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
claude_mpm/BUILD_NUMBER,sha256=9JfxhnDtr-8l3kCP2U5TVXSErptHoga8m7XA8zqgGOc,4
|
|
2
|
-
claude_mpm/VERSION,sha256=
|
|
2
|
+
claude_mpm/VERSION,sha256=RB2gUKMx5VBa3nbppW0YC1fQBvNMIBg7TEJB0kbNlyk,7
|
|
3
3
|
claude_mpm/__init__.py,sha256=UCw6j9e_tZQ3kJtTqmdfNv7MHyw9nD1jkj80WurwM2g,2064
|
|
4
4
|
claude_mpm/__main__.py,sha256=Ro5UBWBoQaSAIoSqWAr7zkbLyvi4sSy28WShqAhKJG0,723
|
|
5
5
|
claude_mpm/constants.py,sha256=sLjJF6Kw7H4V9WWeaEYltM-77TgXqzEMX5vx4ukM5-0,5977
|
|
@@ -830,6 +830,26 @@ claude_mpm/skills/__init__.py,sha256=Z_QNFaW2t_Um5q4icqs9xSgoNKhAPbs5Ny7rMKizBsM
|
|
|
830
830
|
claude_mpm/skills/registry.py,sha256=P4CsN7FylbxIrxuMD8LKVjOv6SLrMJunwvDHPvYqS7U,10233
|
|
831
831
|
claude_mpm/skills/skill_manager.py,sha256=6QaC0B3e8hVVj7FWV6fCr8-SGbnguoXmErUujnXGWCo,10445
|
|
832
832
|
claude_mpm/skills/bundled/__init__.py,sha256=rGZR4FYam6sN_fCzP7l1OpEn4pIJI8UYI_89ErnwSRU,152
|
|
833
|
+
claude_mpm/skills/bundled/api-documentation.md,sha256=lPPvsgtyiPSIT8WeiJtm9g8TRaBtYu5Z9HX3caGi_ME,9492
|
|
834
|
+
claude_mpm/skills/bundled/async-testing.md,sha256=KOdBa6Pa1EPEIljmH1v2tukrsu9NW3c-RiXaee0rJfQ,13010
|
|
835
|
+
claude_mpm/skills/bundled/code-review.md,sha256=QFO0tzyLPDkhva1aLu4xh5Dsen0S4wVQTC9eFXkstTQ,2870
|
|
836
|
+
claude_mpm/skills/bundled/database-migration.md,sha256=oJ6F18Keax74gw5TINhQp127OrCuzB05w4hLX0REdRk,4149
|
|
837
|
+
claude_mpm/skills/bundled/docker-containerization.md,sha256=7jEcuakGM7YWNLUGZhPq09ot_sUqkS3k8sgCpwmx6WQ,3097
|
|
838
|
+
claude_mpm/skills/bundled/express-local-dev.md,sha256=GsMLgxNy4LQsqswsS5JMrjLgLIN50pc7xX6KH89a_rA,31300
|
|
839
|
+
claude_mpm/skills/bundled/fastapi-local-dev.md,sha256=RTU7AdNYPM_N1or1yq7H7p4OQknqMpxKZAE8-OytC-s,25453
|
|
840
|
+
claude_mpm/skills/bundled/git-workflow.md,sha256=M6KyCxykf6_B1d0HQ428MCBJiSkIW0nvTguoHho9lCg,7452
|
|
841
|
+
claude_mpm/skills/bundled/imagemagick.md,sha256=RBybqF7JUsJTCBE4gmJmdOe-fzXvmUlAdXXEZmOX3GA,4135
|
|
842
|
+
claude_mpm/skills/bundled/json-data-handling.md,sha256=_mmNaFakJswbCpaqGy-BHwLNkdPaFEGb93nRi5Ajzao,4550
|
|
843
|
+
claude_mpm/skills/bundled/nextjs-local-dev.md,sha256=a0QvHw7tokJDD4NudvOjR38vsMbSU5pQbOXihfjgWrQ,16468
|
|
844
|
+
claude_mpm/skills/bundled/pdf.md,sha256=xYDfklEGIzc7liMMAYVnkuwb6KEKHPd3YGMq9NCGWcg,2857
|
|
845
|
+
claude_mpm/skills/bundled/performance-profiling.md,sha256=n_ZcgY1YVwUnWioYkTnAU5X5F8gwG6B9r1BTj7Ai_oo,12264
|
|
846
|
+
claude_mpm/skills/bundled/refactoring-patterns.md,sha256=JSZDm7w0kpxP-GCpK9bevEMFxEKfTu4vl7QJNrhl0E0,3809
|
|
847
|
+
claude_mpm/skills/bundled/security-scanning.md,sha256=9j-AdA9IcpIxe-rThajBxk05OXL_uCxLjXPtlLZ7PzI,7577
|
|
848
|
+
claude_mpm/skills/bundled/systematic-debugging.md,sha256=-HeIPw3n13YmkF2Kr07CmA64HWbBFFhtkXxUw9vNM_c,11773
|
|
849
|
+
claude_mpm/skills/bundled/test-driven-development.md,sha256=UqZvDyGzyjsxHBuryI0J5gvbeAeP5itQOyV87sanJpU,8913
|
|
850
|
+
claude_mpm/skills/bundled/vite-local-dev.md,sha256=Ypc3RMAiUXTUzmrvTx4v5LERsz8BaYDyJUJXi3jzkq4,21063
|
|
851
|
+
claude_mpm/skills/bundled/web-performance-optimization.md,sha256=bG1sm1VxrZgetwuTAQjCZp-oT_2lMh6OUgyGvkFiPDw,52937
|
|
852
|
+
claude_mpm/skills/bundled/xlsx.md,sha256=OwcXT9ADlBtySqzO529HTPpEH_xn6Ue6caQbjYQ_GIc,2969
|
|
833
853
|
claude_mpm/storage/__init__.py,sha256=DXnmee6iGqC6ctFLW7_Ty1cVCjYDFuCMkwO4EV0i25k,274
|
|
834
854
|
claude_mpm/storage/state_storage.py,sha256=6jEZ4z35MjtAuTTUdqETTy4_dbMMK8EN_C2kVa62PjY,16811
|
|
835
855
|
claude_mpm/tools/__init__.py,sha256=T3GuCYNAHtjVcKCeivY674PaDm48WX96AriQfTKUknY,347
|
|
@@ -863,9 +883,9 @@ claude_mpm/utils/subprocess_utils.py,sha256=D0izRT8anjiUb_JG72zlJR_JAw1cDkb7kalN
|
|
|
863
883
|
claude_mpm/validation/__init__.py,sha256=YZhwE3mhit-lslvRLuwfX82xJ_k4haZeKmh4IWaVwtk,156
|
|
864
884
|
claude_mpm/validation/agent_validator.py,sha256=GprtAvu80VyMXcKGsK_VhYiXWA6BjKHv7O6HKx0AB9w,20917
|
|
865
885
|
claude_mpm/validation/frontmatter_validator.py,sha256=YpJlYNNYcV8u6hIOi3_jaRsDnzhbcQpjCBE6eyBKaFY,7076
|
|
866
|
-
claude_mpm-4.17.
|
|
867
|
-
claude_mpm-4.17.
|
|
868
|
-
claude_mpm-4.17.
|
|
869
|
-
claude_mpm-4.17.
|
|
870
|
-
claude_mpm-4.17.
|
|
871
|
-
claude_mpm-4.17.
|
|
886
|
+
claude_mpm-4.17.1.dist-info/licenses/LICENSE,sha256=lpaivOlPuBZW1ds05uQLJJswy8Rp_HMNieJEbFlqvLk,1072
|
|
887
|
+
claude_mpm-4.17.1.dist-info/METADATA,sha256=6V6ppc5htwPwVyXbIR4_iMxieQN8v45c-n5LBHDGH4I,20218
|
|
888
|
+
claude_mpm-4.17.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
889
|
+
claude_mpm-4.17.1.dist-info/entry_points.txt,sha256=Vlw3GNi-OtTpKSrez04iNrPmxNxYDpIWxmJCxiZ5Tx8,526
|
|
890
|
+
claude_mpm-4.17.1.dist-info/top_level.txt,sha256=1nUg3FEaBySgm8t-s54jK5zoPnu3_eY6EP6IOlekyHA,11
|
|
891
|
+
claude_mpm-4.17.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|