Clear["Global`*"]
NonnegQ=#≥0&;
ExtendedBinomial[n_?NonnegQ,k_?NonnegQ]:=Binomial[n,k];
SteenrodDegree[Iota[n_]]:=n;
SteenrodDegree[Sq[n_,x_]]:=n+SteenrodDegree[x];
SteenrodDegree[x_+y_]:=Max[SteenrodDegree[x],SteenrodDegree[y]]

AdditivityRule=Sq[n_,x_+y_]->Sq[n,x]+Sq[n,y];
ScalabilityRule=Sq[n_,m_Integer y_]->m Sq[n,y];
ZeroRule=Sq[_,0]->0;
AdemRelation=Sq[i_,Sq[j_,x_]]/;(i>0&&i<2j)->Sum[ExtendedBinomial[j-k-1,i-2k]Sq[i+j-k,Sq[k,x]],{k,0,Floor[i/2]}];
Sq0Rule=Sq[0,x_]->x;
DegreeRule=_Sq?(#[[1]]>SteenrodDegree[#[[2]]]&)->0;
KZnRule=Sq[1,Iota[_]]->0;
SteenrodRules={AdditivityRule,ScalabilityRule,AdemRelation,Sq0Rule,DegreeRule,ZeroRule,KZnRule};

SteenrodReduce[expr_]:=With[{reduced=PolynomialMod[expr/.SteenrodRules,2]},If[SameQ[reduced,expr],reduced,SteenrodReduce[reduced]]]
OneOpAlgStep[class_]:=Select[SteenrodReduce/@(({#,class}/.List->Sq)&/@Range[0,SteenrodDegree[class]]),!SameQ[#,0]&]
OpAlg[classes_]:=Sort[Fold[Union[#1,OneOpAlgStep[#2]]&,{},classes],SteenrodDegree[#1]<SteenrodDegree[#2]&]
UnreducedOpAlg[classes_]:=OneOpAlgStep/@classes

OpAlg[{Sq[3,Iota[5]]}];
OpAlg[%];
OpAlg[%];
MatrixForm[{#,SteenrodDegree[#]}&/@%]